React生命周期

React16.8+生命周期分为三个阶段,分别为挂载、更新和卸载

挂载

  • constructor: 构造函数,最先被执行,通常在构造函数中初始化state对象或者给自定义方法绑定this
  • static getDerivedStateFromProps(nextProps, prevState)。静态方法,当接收到新的属性想去修改state时,可以使用。
  • render()
  • componentDidMount():组件装载之后调用,此时可以获取到DOM节点并操作,比如对canvas,svg的操作,服务器请求,订阅都可以写在这里面,在componentWillUnmount中取消订阅。

更新阶段

  • static getDerivedStateFromProps() 此方法在更新整个挂在阶段都可能会调用。
  • shouldComponentUpdate(nextProps, nextState) 有两个参数,表示新的属性和变化之后的state,返回一个Boolean, true表示会触发重新渲染,false表示不会触发重新渲染,默认返回true,常利用此生命周期来优化React程序性能。
  • render()
  • getSnapshotBeforeUpdate(prevProps, prevState) 函数的返回值,作为第三个参数传给componentDidUpdate, 如果不想要返回值,可以返回null,此生命周期必须与componentDidUpdate搭配使用
  • componentDidUpdate(prevProps, prevState, snapshot) 该方法该方法在getSnapshotBeforeUpdate方法之后被调用,有三个参数prevProps,prevState,snapshot,表示之前的props,之前的state,和snapshot。第三个参数是getSnapshotBeforeUpdate返回的,如果触发某些回调函数时需要用到 DOM 元素的状态,则将对比或计算的过程迁移至 getSnapshotBeforeUpdate,然后在 componentDidUpdate 中统一触发回调或更新状态。

卸载

  • componentWillUnmount() 当我们的组件被卸载或者销毁了就会调用,我们可以在这个函数里去清除一些定时器,取消网络请求,清理无效的DOM元素等垃圾清理工作

lifecycle

Comments