这是我在React中经常遇到的问题。componentDidMount保证在首次渲染组件时会触发该方法,因此似乎很自然地进行高度和偏移之类的DOM测量。但是,在组件生命周期的这一点上,很多时候我收到错误的样式读数。该组件 是 在DOM,当我与调试器打破,但它尚未在屏幕上绘制。我将宽度/高度大部分设置为100%的元素遇到了这个问题。当我进行测量时componentDidUpdate-一切正常,但是此方法在组件的初始渲染时不会触发。
componentDidMount
componentDidUpdate
所以我的问题是-何时确切componentDidMount触发,因为在完成所有浏览器绘制后显然不会触发。
编辑:处理相同的主题:
它还引用了这个github对话,解释了会发生什么
在componentDidMount()所有子组件都已安装之后,将在反应组件树内部触发。这意味着, 在挂载其父 组件 之前componentDidMount()会触发任何组件。 __
componentDidMount()
因此,如果您想测量DOM的位置和大小等,使用componentDidMount()子组件是不安全的时间/地点。
你的情况:由100%的宽度/高度的组件得到准确的读数,安全服用这种测量的地方是里面componentDidMount()的的 顶部 反应成分。 100%是相对于父级/容器的宽度/高度。因此,也只能在安装了父级后才能进行测量。