前端面试题 - 20. react 生命周期的演变

194 阅读2分钟

React的生命周期在不同的版本中有所不同,主要是因为React不断地改进和优化自身,同时也为了更好地支持异步渲染、代码分割和服务端渲染等新特性。以下是React生命周期的演变:

  1. React 15.x版本 在React 15.x版本中,组件的生命周期分为三个阶段:Mounting、Updating和Unmounting。 其中

Mounting阶段有以下生命周期方法:

  • constructor()
  • componentWillMount() 将要挂载
  • render()
  • componentDidMount() 挂载完成

Updating阶段有以下生命周期方法:

  • componentWillReceiveProps() 将要接受参数
  • shouldComponentUpdate() 应该更新
  • componentWillUpdate() 将要更新
  • render()
  • componentDidUpdate() 更新完成

Unmounting阶段只有一个生命周期方法:

  • componentWillUnmount() 将要卸载
  1. React 16.x版本 在React 16.x版本中,React引入了Fiber架构,以支持异步渲染和更好的性能。同时,React还删除了一些生命周期方法,例如componentWillMount、componentWillReceiveProps、componentWillUpdate等,并引入了一些新的生命周期方法。

Mounting阶段有以下生命周期方法:

  • constructor()
  • static getDerivedStateFromProps() 将要更新状态
  • render()
  • componentDidMount()

Updating阶段有以下生命周期方法:

  • static getDerivedStateFromProps() 将要更新状态
  • shouldComponentUpdate() 应该更新
  • render()
  • getSnapshotBeforeUpdate() 更新前获取快照
  • componentDidUpdate() 完成更新

Unmounting阶段只有一个生命周期方法:

  • componentWillUnmount()
  1. React 17.x版本 在React 17.x版本中,React没有引入新的生命周期方法,主要是为了保持向后兼容性,同时也为了更好地支持代码分割和服务端渲染等新特性。

总的来说,React的生命周期方法在不同版本中的变化主要是为了更好地支持新特性和提高性能,但是React也一直保持着向后兼容性,使得开发者可以平滑地升级React版本,而不需要对现有代码做太多的改动。