繁体   English   中英

ShouldComponentUpdate和虚拟DOM反应

[英]ShouldComponentUpdate and Virtual DOM react

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

React是否会为所有组件再次创建虚拟DOM,即使未调用setState()组件也是如此? 我的意思是假设setState()在子组件上被调用,父组件也会对新的虚拟DOM做出反应吗?

即使在shouldComponentUpdate返回false时,反应也会创建虚拟dom吗?

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

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

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

我的意思是假设在子组件上调用了setstate,并且对父组件也做出了新的virtual d反应

不会。父母会导致孩子重新渲染,而不是相反。 React仅重新渲染该子树。 不是它的根源。

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

React在他们的文档中使用一个非常清晰简洁的示例对此进行了解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM