javascript - ShouldComponentUpdate 和虚拟 DOM 使用react

标签 javascript reactjs

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

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

最佳答案

Does react create virtual dom even when shouldComponentUpdate returns false ?

不,没有。如果 shouldComponentUpdate 返回 false,则不会完成该特定组件及其子组件的重新渲染。

Does react create virtual dom again for all components, even for component on which setstate is not called.

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

I mean suppose setstate is called on child component, does react new virtual d for parent component also

没有。父级导致子级重新渲染,而不是相反。 React 仅重新渲染该子树。不是它的根源。

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

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

关于javascript - ShouldComponentUpdate 和虚拟 DOM 使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450692/

相关文章:

javascript - trim JSONP 日期以提取年份?

javascript - 由于 <template> 在 HTML 中内联,Vue.js 2.0 在 Edge 中为空白

javascript - 使用 MobX 监听数组变化

javascript - 通过身份验证保护 React Route 中内容的正确方法?

javascript - Material ui的加载栏组件的颜色变化

reactjs - 从 React Native 中删除 Expo

javascript - 如何在 Typescript 中导入自定义文件类型

javascript - Styled-components 获取 props 值到 javascript 变量

javascript - tinyMCE模态框对话框

node.js - Reactjs 在首页加载时未从数据库加载动态内容