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()