Skip to content

生命周期(类组件)

挂载阶段 (Mounting)

  1. constructor - 初始化状态
  2. componentWillMount (已废弃) - 组件将要挂载
  3. render - 计算虚拟 DOM(纯函数,不能有副作用)
  4. componentDidMount - 挂载完成,可发起网络请求

更新阶段 (Updating)

  1. componentWillReceiveProps - 收到新属性(已废弃)
  2. getDerivedStateFromProps - 从属性派生状态(静态方法)
  3. shouldComponentUpdate - 决定是否更新(性能优化关键点)
  4. getSnapshotBeforeUpdate - 获取 DOM 更新前的快照
  5. componentWillUpdate - 将要更新(已废弃)
  6. render - 重新计算虚拟 DOM
  7. componentDidUpdate - 更新完成

卸载阶段 (Unmounting)

  • componentWillUnmount - 清理操作(清除定时器、取消网络请求)

新生命周期方法示例

getDerivedStateFromProps

从 props 派生 state:

javascript
static getDerivedStateFromProps(nextProps, prevState) {
  if (nextProps.itemCount !== prevState.itemCount) {
    return { itemCount: nextProps.itemCount };
  }
  return null; // 不更新状态
}

getSnapshotBeforeUpdate

获取 DOM 更新前的快照:

javascript
getSnapshotBeforeUpdate(prevProps, prevState) {
  const list = this.listRef.current;
  return list.scrollHeight;  // 返回更新前的高度
}

componentDidUpdate(prevProps, prevState, snapshot) {
  const list = this.listRef.current;
  // 使用快照计算新的滚动位置
  list.scrollTop = list.scrollTop + (list.scrollHeight - snapshot);
}