生命周期(类组件)
挂载阶段 (Mounting)
- constructor - 初始化状态
- componentWillMount (已废弃) - 组件将要挂载
- render - 计算虚拟 DOM(纯函数,不能有副作用)
- componentDidMount - 挂载完成,可发起网络请求
更新阶段 (Updating)
- componentWillReceiveProps - 收到新属性(已废弃)
- getDerivedStateFromProps - 从属性派生状态(静态方法)
- shouldComponentUpdate - 决定是否更新(性能优化关键点)
- getSnapshotBeforeUpdate - 获取 DOM 更新前的快照
- componentWillUpdate - 将要更新(已废弃)
- render - 重新计算虚拟 DOM
- 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);
}