[英]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.