我知道这个主题已经讨论了很多,但是我不确定如何研究我的问题,我希望它遵循这里的规则。
我知道,要决定是否更新DOM,请对虚拟DOM与重新渲染的DOM进行比较。但是我只是不知道它是否决定更新它-它会更新特定的重新渲染组件的所有元素,还是只知道更改componenet的更改的元素?
提前致谢,
对帐文档是更好地了解React如何决定重新呈现元素的一个好地方,但我可以总结一下:
每次调用render()时, react将创建一个新的虚拟DOM,其中根节点是其渲染函数被调用的组件。当组件或其任何子组件的状态或属性更改时,将调用render()函数。render()函数从根目录开始销毁所有旧的虚拟DOM节点,并创建一个全新的虚拟DOM。
为了确保组件的重新渲染流畅高效,React使用Diffing算法将创建新树所需的时间减少到O(n)的时间复杂度,通常复制树的时间复杂度为> O (n ^ 2)。它是通过在DOM中的每个元素上使用“ key”属性来完成此操作的。React知道,除了从头创建每个元素之外,它还可以检查DOM中每个节点上的“ key”属性。这就是为什么如果不设置每个元素的“ key”属性会收到警告的原因,React使用这些键大大提高了其渲染速度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句