如何在呈现父元素之前检查React中的子元素的DOM?

时间:2016-08-28 01:44:29

标签: javascript dom reactjs

让A类在其render方法中创建B类元素。 A类的呈现取决于B类生成的元素的计算大小,即它需要了解子项的呈现 DOM以呈现其自己的DOM。

问题是生命周期事件按以下顺序发生:

  • B渲染
  • A渲染
  • B坐骑
  • A坐骑

并且在呈现A时,甚至不可能将ref变为B.

我想出了两个解决方案:

  1. 将回调onKnownDims作为支柱传递给B.让第一次渲染出现一些不正确的尺寸。当B被挂载时,它会调用onKnownDims来更改A的状态,从而立即进行第二次渲染。这种方式在DOM不正确时有一些短时间范围。尽管可以用一些黑客(display: none等)来解决这个问题,但解决方案听起来并不健全。
  2. 在A的componentWillMount电话this.render中,将其返回ReactDOM.render。即使它已被弃用,它也会返回对B的引用,该引用可用于从结果DOM中查找维度并将其设置为A的状态。然后将B的DOM从屏幕外父元素重新转换为A(这是有效的,因为React的渲染不关心root是否在DOM中重定位)。否则(通过使用回调)这种方法不起作用,因为componentWillMount是同步的。
  3. 有没有办法正确地做到这一点(即在第一次渲染和没有弃用功能的情况下)?

0 个答案:

没有答案