React 中的生命周期钩子函数详解

· 约 6 分钟读完

React 是一个非常流行的 JavaScript 库,用于构建用户界面。React 中的生命周期钩子函数是 React 组件中非常重要的一部分。生命周期钩子函数可以让您在组件的不同阶段执行操作。本文将详细介绍 React 的生命周期钩子函数。

生命周期钩子函数

React 组件的生命周期可以分为三个阶段:

  1. Mounting(挂载):在组件被创建并插入 DOM 中时发生。
  2. Updating(更新):在组件被重新渲染时发生。
  3. Unmounting(卸载):在组件从 DOM 中移除时发生。

每个阶段都有一些生命周期钩子函数,这些函数会在不同的时间点被调用。下面是这些函数的列表:

Mounting 阶段

Mounting 阶段包括以下生命周期钩子函数:

  1. constructor(props):组件被创建时调用。在这个函数中,您可以初始化组件的状态和绑定事件处理程序。
  2. static getDerivedStateFromProps(props, state):在组件被挂载之前调用,它会在每次渲染之前被调用。这个函数返回一个对象,用于更新组件的状态。
  3. render():在组件被挂载时调用。这个函数返回一个 React 元素,用于渲染组件的用户界面。
  4. componentDidMount():在组件被挂载之后调用。在这个函数中,您可以执行任何必要的 DOM 操作,如获取元素的引用或添加事件监听器。

Updating 阶段

Updating 阶段包括以下生命周期钩子函数:

  1. static getDerivedStateFromProps(props, state):在组件更新之前调用。这个函数返回一个对象,用于更新组件的状态。
  2. shouldComponentUpdate(nextProps, nextState):在组件更新之前调用。如果这个函数返回 false,组件将不会被更新。
  3. render():在组件被更新时调用。这个函数返回一个 React 元素,用于渲染组件的用户界面。
  4. getSnapshotBeforeUpdate(prevProps, prevState):在组件被更新之前调用。这个函数返回一个值,用于更新组件的状态。
  5. componentDidUpdate(prevProps, prevState, snapshot):在组件被更新之后调用。在这个函数中,您可以执行任何必要的 DOM 操作,如获取元素的引用或添加事件监听器。

Unmounting 阶段

Unmounting 阶段包括以下生命周期钩子函数:

  1. componentWillUnmount():在组件被卸载之前调用。在这个函数中,您可以执行任何必要的清理操作,如取消事件监听器或清除定时器。

生命周期钩子函数的执行顺序

React 生命周期钩子函数的执行顺序如下:

  1. constructor(props)
  2. static getDerivedStateFromProps(props, state)
  3. render()
  4. componentDidMount()
  5. static getDerivedStateFromProps(props, state)
  6. shouldComponentUpdate(nextProps, nextState)
  7. render()
  8. getSnapshotBeforeUpdate(prevProps, prevState)
  9. componentDidUpdate(prevProps, prevState, snapshot)
  10. componentWillUnmount()

生命周期钩子函数的示例代码

下面是一个 React 组件,它演示了生命周期钩子函数的使用:

在这个示例中,组件被创建并插入 DOM 中时,将依次调用 constructor()、static getDerivedStateFromProps()、render() 和 componentDidMount()。当用户点击按钮时,将依次调用 shouldComponentUpdate()、render()、getSnapshotBeforeUpdate() 和 componentDidUpdate()。当组件被卸载时,将调用 componentWillUnmount()。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d11773a941bf713425205f