千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:合肥千锋IT培训  >  技术干货  >  react生命周期16版本删除了什么钩子函数?

react生命周期16版本删除了什么钩子函数?

来源:千锋教育
发布人:qyf
时间: 2023-02-14 17:21:50

react生命周期16版本删除了什么钩子函数

  react生命周期16版本删除了什么钩子函数?为什么删除?有什么替代的

  react和vue一样,生命周期也分为三个阶段:初始化、运行中、销毁。

  react生命周期在16后面版本进行了更新迭代,初始化阶段生命周期顺序:

  先执行constructor,在这里可以创建组件实例,传递属性,挂载初始状态、this-binding

  然后执行static getDerivedStateFromProps, 这是新增的一个生命周期钩子函数,本身是一个静态方法,内部不能访问this,可以根据当前的属性和状态生成一个派生的状态,但是需要注意的是,任何属性和状态变化都会再次引起这个钩子函数的执行,所以往往会存在一些性能问题。需要自行做缓存优化。

  接下来删除了一个componentWillMount,类似与vue中的beforeMount,因为react提倡render前不做副作用动作,保持纯净,所以被废弃。

  接下来执行render函数,在render中也不要做副作用动作,容易造成死循环,作用就是生成虚拟dom结构。

  最后执行的是componentDidMount,在这里可以做副作用动作了,初始的调用接口、dom操作、一些插件的初始化、事件的绑定。

  当组件的属性和状态变化或者执行forceUpdate的时候, 会引起运行中阶段的钩子函数执行。

  接下来删除了一个componentWillReceiveProps,这个钩子函数会在属性更新的时候执行,我们之前可以在这里根据更新后的属性来更改自身的状态或者做一些其他的逻辑动作,现在可以利用getDerivedStateFromProps替代,并且因为render前不能做副作用,所以废弃。

  首先还是执行static getDerivedStateFromProps, 再次进行派生状态的计算生成。

  接下来会执行shouldComponentUpdate,在这个钩子函数中可以通过this上当前的属性和状态与函数参数中接收到更改后的属性和状态进行对比,判断是否要继续执行其他的生命周期钩子函数,提升性能,需要注意的是forceUpdate执行后,不会执行shouldComponentUpdate,也可以利用PureComponent父类中默认的浅对比的shouldComponentUpdate来优化效果。

  接下来还会执行render,之后就是static getSnapshotBeforeUpdate,在这里可以提前进行一些数据的计算,将结果返回到componentDidUpdate中,进行逻辑分离, 之前在componentDidUpdate前会执行一个componentWillUpdate,因为功能能力被getSnapshotBeforeUpdate取代,自身也不能做副作用,所以被废弃。

  最后执行componentDidUpdate,在这里可以进行插件更新、dom的操作,也可以根据this上最新的属性和方法与函数参数中接收到的之前的属性和方法对比,判断此次更新的是哪一个数据,起到监听数据变化的作用。

  当组件销毁的时候,例如路由切换、组件切换,对应组件的是componentWillUnmount会执行,在这里我们可以做一些善后工作,例如清除计时器、事件解绑等。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

unity快捷键大全

2023-08-28

unity射线检测多个物体

2023-08-28

unity富文本字体大小

2023-08-28

最新文章NEW

unity性能优化指标

2023-08-28

unity开发常用框架

2023-08-28

unity玻璃材质球

2023-08-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>