ShouldComponentUpdate和虚拟DOM反应

时间:2019-06-04 20:10:43

标签: javascript reactjs

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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

  

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

不。父母使孩子重新屈服,而不是相反。 React仅重新渲染该子树。不是它的根源。

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

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

相关问题