this.forceUpdate 会重新渲染所有孩子吗?

Wal*_*ari 2 javascript reactjs react-native

文档中有以下关于 forceUpdate 的说明:

调用 forceUpdate() 将导致在组件上调用 render(),跳过 shouldComponentUpdate()。这将触发子组件的正常生命周期方法,包括每个子组件的 shouldComponentUpdate() 方法。如果标记发生变化,React 仍然只会更新 DOM。

https://reactjs.org/docs/react-component.html#forceupdate

这是否意味着组件的子组件也调用了它们的渲染函数?

lin*_*new 5

它将“重新渲染”每个在其shouldComponentUpdate方法内未返回 false 的子项,但请注意re-rendering !== re-drawing,它只会导致 React 的差异算法运行。

并且只有,如果差异算法发现当前版本的虚拟 DOM 与先前版本的虚拟 DOM 有所不同,UI 的特定“更改”部分才会在屏幕上重新绘制。