react类组件的生命周期

178 阅读1分钟

react类组件的生命周期

constructor(props)

  • 一般做初始化state的操作
  • 初次渲染

instance.props = newProps

  • 之后的生命周期就可以拿到 this.props

getDerivedStateFromProps

  • 初次渲染, 更新阶段
  • 参数:最新的props 最新的state
  • return newState
  • 在初次渲染时, instance.state = fiber.memoizedState 更新state

componentWillMount

  • 废弃,由于可能会更改组件状态,但与此同时,任务被高优先级任务打断,导致状态错乱

render

componentDidMount

  • 执行时机: 初次渲染,在当前宏任务中,所以会阻塞渲染

更新阶段

processUpdateQueue

  • 注意:没有立即更新 instance.state
  • 只更改 fiber.memoizedState
  • 这么做的目的是保存一些快照

getDerivedStateFromProps

  • 参数: 最新的props 最新的state(fiber.memoizedState)
  • 注意: 更改 fiber.memoizedState 但没更新 instance.state

shouldComponentUpdate

  • 参数: 最新props 最新state this.state this.props 都是之前的
  • 返回 false 后面不会继续 render也不会执行了

componentWillUpdate

  • 参数: 最新props 最新state this.state this.props 都是之前的

将最新的props 和 state 赋值到 instance 上

render

getSnapshotBeforeUpdate

  • 执行时机: 更新阶段
  • 参数:上一次的props 上一次的state this.props this.state 都是最新的
  • 返回的值作为 componentDidUpdate 的第三个参数

更新dom

componentDidUpdate

  • 执行时机: 更新阶段
  • 参数:上一次的props 上一次的state this.props this.state 都是最新的 getSnapshotBeforeUpdate()