使用setState()
调用更新组件时,即使shouldComponentUpdate()
返回false时,Reaction如何为该组件创建新的虚拟DOM?
反应是否再次为所有组件创建虚拟DOM,即使未调用setState()
的组件也是如此?我的意思是假设setState()
在子组件上被调用了,父组件也响应了新的虚拟DOM吗?
答案 0 :(得分:1)
即使shouldComponentUpdate返回false时,反应也会创建虚拟dom吗?
不,不是。如果shouldComponentUpdate
返回false,则不会对该特定组件及其子组件进行重新渲染。
反应是否再次为所有组件创建虚拟dom,即使未调用setstate的组件也是如此。
它将为状态或道具已更改的那些组件(及其子组件)创建。但这并不一定意味着会发生实际的DOM更新。同样如上所述,如果这些组件中的任何一个从shouldComponentUpdate
返回false,则对该组件及其子树停止重新渲染。
我的意思是假设setstate在子组件上被调用,并且对父组件也做出了新的virtual d
不。父母使孩子重新屈服,而不是相反。 React仅重新渲染该子树。不是它的根源。
也就是说,重新渲染(创建虚拟DOM)并不总是意味着DOM更改。如果子树的先前虚拟DOM和新虚拟DOM相同,则实际DOM保持不变。
React在其docs中使用一个非常清晰简洁的示例对此进行了解释。