三个阶段
- 挂载阶段:已插入真实DOM(Mounting)
- 更新阶段:正在被重新渲染(Updating)
- 卸载阶段:已移出真实DOM(Unmounting)
挂载
组件实例被创建并插入DOM中
- constructor():组件挂载之前
- getDeriveStateFromProps():调用render方法之前调用,并且在初始挂载及后续更新时都会被调用
- render()
- componentDidMount():组件挂载后(插入DOM树中)立即调用
更新
当组件的state或props发生变化时,触发组件更新
- getDerivedStateFromProps():在调用 render 方法之前调用,并且在初始挂载及后续更新时都会被调用。根据 shouldComponentUpdate() 的返回值,判断 React 组件的输出是否受当前 state 或 props 更改的影响
- shouldComponentUpdate():当 props 或 state 发生变化时,在渲染执行之前被调用
- render():class 组件中唯一必须实现的方法
- getSnapshotBeforeUpdate():在最近一次渲染输出(提交到 DOM 节点)之前调用
- componentDidUpdate():在更新后会被立即调用
卸载
当组件从DOM中移除时会调用
componentWillUnmount():在组件卸载及销毁之前直接调用