React 生命周期(useEffect 钩子)
在 React 中,每个组件从创建到销毁,会经历一系列的阶段,这些阶段被统称为组件的生命周期(Lifecycle)。理解生命周期不仅有助于你更合理地组织组件逻辑,还能帮助你处理副作用、数据加载、定时器、清理操作等。
本文将带你认识函数组件和类组件的生命周期,并重点介绍如何在现代 React 中使用 useEffect()
管理副作用。
什么是组件的生命周期?
React 组件的生命周期可以划分为三个主要阶段:
- 挂载阶段(Mounting):组件被创建并插入到 DOM 中。
- 更新阶段(Updating):组件的
props
或state
发生变化时重新渲染。 - 卸载阶段(Unmounting):组件被从 DOM 中移除。
初始化阶段
constructor
:此函数用来做一些组件的初始化工作,比如定义 state 和 props。componentWillMount
:此函数是在组件挂载到 DOM 节点前调用,可以在这个阶段修改初始定义的 state 和 props。render
:页面渲染。componentDidMount
:此函数是在组件挂载到 DOM 节点后调用。在此阶段可调取服务端接口数据,更新组件,也可以获取真实的 DOM 节点。这是 React 中最常用的生命周期。
更新阶段
componentWillReceiveProps
:此函数表示父组件渲染时,子组件也更新,可通过此函数来监听 props 和 state 的变化。shouldComponentUpdate
:此函数可以判断当前 state 是否发生变化,如果没有发生变化,可在此返回 false,则不会重新渲染页面。因此在此期间可以做性能优化。componentWillUpdate
:此函数在更新页面前调用。render
:根据改变的 state 和 props 重新渲染页面。componentDidUpdate
:此函数是组件已经完成更新,新的虚拟 DOM 节点已经完成挂载。