ShouldComponentUpdate 和 Virtual DOM 做出反应



当使用setState()调用更新组件时,即使shouldComponentUpdate()返回 false,反应如何为组件创建新的虚拟 DOM?

react 是否再次为所有组件创建虚拟 DOM,即使是未调用setState()的组件?我的意思是假设在子组件上调用setState(),是否也会为父组件响应新的虚拟 DOM?

反应会创建虚拟 dom 即使应该组件更新返回 false 吗?

不,它没有。如果shouldComponentUpdate返回 false,则不会对该特定组件及其子组件进行重新渲染。

反应是否再次为所有组件创建虚拟 dom,即使对于未调用 setstate 的组件也是如此。

它将为状态或属性已更改的组件(及其子组件)创建。但这并不一定意味着实际的 DOM 更新会发生。同样如上所述,如果这些组件中的任何一个从shouldComponentUpdate返回 false,则该组件及其子树的重新渲染将停止。

我的意思是假设在子组件上调用 setstate,是否也为父组件响应新的虚拟 d

不。父级会导致子项重新呈现,而不是相反。React 只重新渲染该子树。不是它的根源。

也就是说,重新渲染(虚拟 DOM 创建)并不总是意味着 DOM 更改。如果子树的先前虚拟 DOM 和新虚拟 DOM 相同,则实际的 DOM 保持不变。

React 在他们的文档中使用了一个非常清晰简洁的示例来解释这一点。

最新更新