React最新的⽣命周期是怎样的?

x33g5p2x  于2022-05-23 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(372)
  1. React 16之后有三个⽣命周期被废弃(但并未删除)
  2. 1componentWillMount
  3. 2componentWillReceiveProps
  4. 3componentWillUpdate
  5. 官⽅计划在17版本完全删除这三个函数,只保留UNSAVE_前缀的三个函数,⽬的是为
  6. 了向下兼容,但是对于开发者⽽
  7. ⾔应该尽量避免使⽤他们,⽽是使⽤新增的⽣命周期函数替代它们
  8. ⽬前React 16.8 +的⽣命周期分为三个阶段,分别是挂载阶段、更新阶段、卸载阶段

挂载阶段

  1. 1constructor: 构造函数,最先被执⾏,我们通常在构造函数⾥初始化state对象或者给⾃定义⽅法绑定this
  2. 2getDerivedStateFromProps: static
  3. getDerivedStateFromProps(nextProps, prevState) ,这是个静态⽅法,当我
  4. 们接收到新的属性想去修改我们state,可以使⽤getDerivedStateFromProps
  5. 3render: render函数是纯函数,只返回需要渲染的东⻄,不应该包含其它的业
  6. 务逻辑,可以返回原⽣的DOMReact组件、FragmentPortals、字符串和数字、
  7. Booleannull等内容
  8. 4componentDidMount: 组件装载之后调⽤,此时我们可以获取到DOM节点并操
  9. 作,⽐如对canvassvg的操作,服务器请求,订阅都可以写在这个⾥⾯,但是记得
  10. componentWillUnmount中取消订阅。

更新阶段

  1. 1getDerivedStateFromProps: 此⽅法在更新个挂载阶段都可能会调⽤
  2. 2shouldComponentUpdate: shouldComponentUpdate(nextProps,
  3. nextState) ,有两个参数nextPropsnextState,表示新的属性和变化之后的
  4. state,返回⼀个布尔值,true表示会触发重新渲染,false表示不会触发重新渲
  5. 染,默认返回true,我们通常利⽤此⽣命周期来优化React程序性能
  6. 3render: 更新阶段也会触发此⽣命周期
  7. 4getSnapshotBeforeUpdate: getSnapshotBeforeUpdate(prevProps,
  8. prevState) ,这个⽅法在render之后,componentDidUpdate之前调⽤,有两个参
  9. prevPropsprevState,表示之前的属性和之前的state,这个函数有⼀个返回
  10. 值,会作为第三个参数传给componentDidUpdate,如果你不想要返回值,可以返回
  11. null,此⽣命周期必须与componentDidUpdate搭配使⽤
  12. 5componentDidUpdate: componentDidUpdate(prevProps, prevState,
  13. snapshot) ,该⽅法在getSnapshotBeforeUpdate
  14. ⽅法之后被调⽤,有三个参数prevPropsprevStatesnapshot,表示之前的
  15. props,之前的state,和snapshot
  16. 第三个参数是getSnapshotBeforeUpdate返回的,如果触发某些回调函数时需要⽤
  17. DOM 元素的状态,则将对⽐或计算的过程迁移⾄ getSnapshotBeforeUpdate
  18. 然后在 componentDidUpdate 中统⼀触发回调或更新状态。

卸载阶段:

  1. componentWillUnmount: 当我们的组件被卸载或者销毁了就会调⽤,我们可以在
  2. 这个函数⾥去清除⼀些定时器,取消⽹络请求,清理⽆效的DOM元素等垃圾清理⼯作

相关文章