React的组件⽣命周期⽅法分为三个阶段:挂载阶段(Mounting)、更新阶段(Updating)和卸载阶段(Unmounting)。以下是这些阶段中各个⽣命周期⽅法的描述和调⽤时机:
挂载阶段(Mounting)
1. constructor(props)
◦
调⽤时机:在React组件挂载之前被调⽤。
◦
⽤途:⽤于初始化内部state或绑定事件处理函数。
2. static getDerivedStateFromProps(props, state)
◦
调⽤时机:在创建或更新阶段调⽤,或在props、state和render⽅法前调⽤。
◦
⽤途:基于props更新state,在render之前返回新的state。
3. render()
◦
调⽤时机:在组件被挂载或更新时都会调⽤。
◦
⽤途:返回需要渲染的React元素,不应该在这⾥直接修改state。
4. componentDidMount()
◦
调⽤时机:组件挂载到真实DOM节点后执⾏,render⽅法之后执⾏。
◦
⽤途:发送⽹络请求、添加订阅、添加DOM事件监听器等初始化操作。
更新阶段(Updating)
1. static getDerivedStateFromProps(props, state)
◦
与挂载阶段的同名⽅法相同,在更新时也会调⽤。
2. shouldComponentUpdate(nextProps, nextState)
◦
调⽤时机:在组件更新之前调⽤,可以控制组件是否进⾏更新。
◦
⽤途:返回true时组件更新,返回false则不更新,是React性能优化中重要的⼀环。
3. render()
◦
与挂载阶段的同名⽅法相同,在更新时也会调⽤。
4. getSnapshotBeforeUpdate(prevProps, prevState)
◦
调⽤时机:在最近⼀次渲染输出(提交到DOM节点)之前调⽤,⾸次渲染不会执⾏。
◦
⽤途:获取组件更新前的信息,如DOM的某些度量值。
5. componentDidUpdate(prevProps, prevState, snapshot)
◦
调⽤时机:在组件更新后会被⽴即调⽤。
◦
⽤途:⽤于在DOM更新后进⾏⽹络请求等需要依赖DOM的操作。
卸载阶段(Unmounting)
1. componentWillUnmount()
◦
调⽤时机:组件卸载及销毁之前直接调⽤。
◦
⽤途:取消⽹络请求、移除监听事件、清理DOM元素、清理定时器等操作。
需要注意的是,从React 16.3开始,
componentWillMount
、componentWillReceiveProps
和
componentWillUpdate
等⽣命周期⽅法被标记为不安
全,并在后续版本中可能被废弃。取⽽代之的是
getDerivedStateFromProps
和
getSnapshotBeforeUpdate
等新的⽣命周期⽅法。同时,React Hooks的引⼊也为函数组件提
供了类似⽣命周期⽅法的功能,如
useEffect
可以⽤来模拟
componentDidMount
、
componentDidUpdate
和
componentWillUnmount
等⽣命周期⽅法的行为。
更多前端面试题 需要的同学转发本文+关注+【点击此处】即可获取!加油复习