ReactJS:每次调用“setState”时“渲染”都会触发吗?
React 的设计目的是仅在以下情况下有效地重新渲染组件:必要的。然而,这种行为可能并不总是显而易见,从而导致有关“setState”和渲染之间关系的问题。
默认渲染行为
默认情况下,调用“setState” " 触发组件及其所有子组件的完全重新渲染。这可确保任何状态更改都能准确反映在 UI 中。
此行为是“shouldComponentUpdate”默认情况下始终返回 true 的结果。此方法确定组件是否应根据 props 或 state 的更改来更新其渲染输出。
渲染的目的
即使每次都调用“render” setState”被调用时,React 不会立即更新 DOM。相反,会生成代表 UI 所需状态的虚拟 DOM。仅当新旧虚拟 DOM 之间发生更改时,才会修改实际 DOM。
示例
考虑问题中提供的代码片段:
this.setState({'test':'me'});
尽管初始单击后状态没有改变,但父组件和子组件都会重新渲染。这是因为“shouldComponentUpdate”总是返回 true,强制重新渲染。
优化重新渲染
为了防止不必要的重新渲染,可以重写“shouldComponentUpdate” " 并将新的 props 和 state 与之前的值进行比较。如果没有影响 UI 的重大更改,您可以返回 false 以阻止渲染。
请记住,如果逻辑过于复杂或执行不必要的比较,过度使用“shouldComponentUpdate”可能会导致性能问题。
以上是ReactJS:'setState”是否总是触发完全重新渲染?的详细内容。更多信息请关注PHP中文网其他相关文章!