Reactjs 组件将在虚拟dom差异化完成后更新?

Reactjs 组件将在虚拟dom差异化完成后更新?,reactjs,Reactjs,我在计算组件将在哪里更新时遇到了一些问题。文档说它在渲染之前触发。然而,在我的组件中,唯一改变的道具是defaultValue,这不会影响udpate上的DOM。那么我的组件willupdate是如何触发的呢?我想它只是在测试了道具/状态以查看它是否确实更改了虚拟DOM之后才触发的。ComponentWillUpdate()与DOM是否会更新没有关系。它仅用作钩子,用于在渲染道具之前对道具执行某些操作。如果要防止在道具更改时渲染组件,则需要在shouldComponentUpdate()内返回f

我在计算
组件将在哪里更新时遇到了一些问题。文档说它在渲染之前触发。然而,在我的组件中,唯一改变的道具是
defaultValue
,这不会影响udpate上的DOM。那么我的
组件willupdate
是如何触发的呢?我想它只是在测试了道具/状态以查看它是否确实更改了虚拟DOM之后才触发的。

ComponentWillUpdate()
与DOM是否会更新没有关系。它仅用作钩子,用于在渲染道具之前对道具执行某些操作。如果要防止在道具更改时渲染组件,则需要在
shouldComponentUpdate()
内返回false注意
ComponentWillUpdate()
在第一次运行(装载)时不会为要使用的


componentWillMount()

对不起,我的意思是首先是componentWillReceive(),然后是componentshoulldupdate(),然后是componentWillUpdate(),就在renderYes之前,你是对的。当道具或状态发生更改时,将调用渲染函数。render()函数应该是纯函数,这意味着它不修改组件状态,每次调用时返回相同的结果,并且不直接与浏览器交互。如果您需要与浏览器交互,请使用componentDidMount()或其他生命周期方法执行您的工作。谢谢@Codesingh,我想我对它有了更多的了解。所以我得出结论,仅仅因为调用了
componentDidUpdate
,并不意味着HTML已经更新。componentDidUpdate()将不会在初始渲染期间被调用Tanks DirtyRedz,请您解释一下您/文档所说的“渲染”是什么意思。是在虚拟dom发生变化并决定虚拟dom发生变化后,它将进行更新吗?比如,如果没有改变道具,它会触发吗?是的,在第一次渲染时,它会将html装载到dom中。在随后的渲染中,它将检查虚拟dom中的差异,如果有任何更新,则会有效地始终调用dom.Render,并且它是子组件渲染。这就是为什么应该提供方法shouldComponentUpdate,以便您可以减少渲染的数量。如果您的应用程序非常大,并且不希望进行大量渲染检查。在中小型应用程序上,这不是一个问题。我说的总是我的意思是,当父组件道具或状态发生变化时,它将调用render,然后对其所有子组件调用render,因为react并不认为您的子组件正在做什么。感谢DirtyRedz,我认为现在它更有意义了。所以没有生命周期事件只在虚拟dom上检测到差异后才会触发?