当使用 setState()
调用更新组件时,即使 shouldComponentUpdate()
返回 false,React 如何为组件创建新的虚拟 DOM?
React 是否会为所有组件再次创建虚拟 DOM,即使是未调用 setState()
的组件?我的意思是假设在子组件上调用 setState()
,是否也会为父组件 react 一个新的虚拟 DOM?
最佳答案
Does react create virtual dom even when shouldComponentUpdate returns false ?
不,没有。如果 shouldComponentUpdate
返回 false,则不会完成该特定组件及其子组件的重新渲染。
Does react create virtual dom again for all components, even for component on which setstate is not called.
它将为那些状态或属性已更改的组件(及其子组件)创建。但这并不一定意味着实际的 DOM 更新将会发生。同样如上所述,如果这些组件中的任何一个从 shouldComponentUpdate
返回 false,则该组件及其子树的重新渲染将停止。
I mean suppose setstate is called on child component, does react new virtual d for parent component also
没有。父级导致子级重新渲染,而不是相反。 React 仅重新渲染该子树。不是它的根源。
也就是说,重新渲染(虚拟 DOM 创建)并不总是意味着 DOM 更改。如果子树的先前虚拟 DOM 和新虚拟 DOM 相同,则实际 DOM 保持不变。
React 在其 docs 中使用非常清晰简洁的示例对此进行了解释。 。
关于javascript - ShouldComponentUpdate 和虚拟 DOM 使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450692/