- 当组件的 state 或者 props 发生变化时,React 会将新的 props 和 state 比较之前的,根据比较结果决定是否进行更新。
- 如果
shouldComponentUpdate、PureComponent或 React.memo 表示不需要更新,React 将不会进行更新。 - 如果需要更新,React 会调用
render方法以及相关的生命周期方法或 Hooks,这个过程会创建一个虚拟 DOM 树。 - React 之后会对比新的虚拟 DOM 树与上一次更新时的虚拟 DOM 树,通过 DOM diffing 算法判断在哪进行实际的 DOM 更新。
- 应用必要的 DOM 更新到实际的 DOM 树上,如果有必要,调用
getSnapshotBeforeUpdate和componentDidUpdate方法。
这个过程保持了 React 组件的高效和可预测性,同时提供了生命周期的方法和 Hooks,使开发者能够插入自定义行为或响应组件的生命周期事件。