旧的生命周期
组件挂载阶段,由ReactDom.render触发,初次渲染
- constructor:初始化
- componentWillMount:组件将要挂载的钩子
- render的调用时机:每次状态变化时调用,所以最终的调用次数为1+n
- 初始化渲染
- 状态更新之后
- componentDidMount:组件挂载完毕:一般做一些初始化的操作
- componentWillUnmount:组件即将卸载:一般做一些收尾的事情,关闭定时器等
组件更新阶段(通过setState更新)
- 调用setState
- shouldComponentUpdate:用于确认是否需要更新,返回true表示需要更新,会正常走后面的流程,否则不会走后面的流程
- componentWillUpdate:组件将要更新的钩子
- render
- componentDidUpdate:组件更新完毕的钩子
组件更新阶段(通过forceUpdate更新)
- 调用forceUpdate
- componentWillUpdate:组件将要更新的钩子
- render
- componentDidUpdate:组件更新完毕的钩子
组件更新阶段(通过父组件render更新,即父组件通过props传递)
- 父组件render
- componentWillReceiveProps:组件将要接收props(子组件中),第一次初始化的时候不会被调用
- shouldComponentUpdate:确认是否需要更新
- componentWillUpdate:组件将要更新的钩子
- render
- componentDidUpdate:组件更新完毕的钩子
新的生命周期
static getDerivedStateFromPorops:object||null:使用场景:state的值在任何时候都取决于props
getSnapshotBeforeUpdate(preProps,preState):在更新之前获取快照,其返回值可以传到componentDidUpdate