react生命周期(自用)

105 阅读1分钟

旧的生命周期

image.png

组件挂载阶段,由ReactDom.render触发,初次渲染

  1. constructor:初始化
  2. componentWillMount:组件将要挂载的钩子
  3. render的调用时机:每次状态变化时调用,所以最终的调用次数为1+n
    1. 初始化渲染
    2. 状态更新之后
  4. componentDidMount:组件挂载完毕:一般做一些初始化的操作
  5. componentWillUnmount:组件即将卸载:一般做一些收尾的事情,关闭定时器等

组件更新阶段(通过setState更新)

  1. 调用setState
  2. shouldComponentUpdate:用于确认是否需要更新,返回true表示需要更新,会正常走后面的流程,否则不会走后面的流程
  3. componentWillUpdate:组件将要更新的钩子
  4. render
  5. componentDidUpdate:组件更新完毕的钩子

组件更新阶段(通过forceUpdate更新)

  1. 调用forceUpdate
  2. componentWillUpdate:组件将要更新的钩子
  3. render
  4. componentDidUpdate:组件更新完毕的钩子

组件更新阶段(通过父组件render更新,即父组件通过props传递)

  1. 父组件render
  2. componentWillReceiveProps:组件将要接收props(子组件中),第一次初始化的时候不会被调用
  3. shouldComponentUpdate:确认是否需要更新
  4. componentWillUpdate:组件将要更新的钩子
  5. render
  6. componentDidUpdate:组件更新完毕的钩子

新的生命周期

image.png static getDerivedStateFromPorops:object||null:使用场景:state的值在任何时候都取决于props getSnapshotBeforeUpdate(preProps,preState):在更新之前获取快照,其返回值可以传到componentDidUpdate