1. React生命周期概述
在React开发中,组件生命周期是每个开发者必须掌握的核心概念。它描述了组件从创建到销毁的完整过程,理解这些生命周期方法能帮助我们更好地控制组件行为、优化性能和处理副作用。
我第一次接触React生命周期是在2015年,当时React 15的生命周期模型还相对简单。随着React 16 Fiber架构的引入,生命周期发生了重大变化,新增了getDerivedStateFromProps等静态方法,废弃了componentWillMount等不安全方法。这些变化让很多开发者感到困惑,但也让React的性能和可预测性得到了显著提升。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 生命周期阶段详解
2.1 挂载阶段(Mounting)
当组件实例被创建并插入DOM时,会依次调用以下方法:
- constructor()
- static getDerivedStateFromProps()
- render()
- componentDidMount()
constructor是ES6类的构造函数,在这里我们应该初始化state和绑定方法。需要注意的是,在constructor中不能调用setState,因为此时组件还未挂载。
javascript复制class Example extends React.Component {
constructor(props) {
super(props); // 必须首先调用super
this.state = { count: 0 };
this.handleClick = this.handleClick.bind(this);
}
// ...
}
getDerivedStateFromProps是一个静态方法,它在render之前调用,用于根据props的变化来更新state。这个方法应该尽量少用,因为容易导致代码难以维护。
2.2 更新阶段(Updating)
当组件的props或state发生变化时,会触发更新流程:
- static getDerivedStateFromProps()
- shouldComponentUpdate()
- render()
- getSnapshotBeforeUpdate(
