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

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

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

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

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

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

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

来源:千锋教育
发布人:bjq
时间: 2023-03-16 11:34:00

  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来优化效果。

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

猜你喜欢LIKE

什么是Java循环?

2023-03-30

switch语句的case和default有顺序吗?

2023-03-30

SpringBoot中使用redis 新手入门

2023-03-29

最新文章NEW

10分钟学会阿里OSS对象存储

2023-03-07

没有弹性盒,如何玩转移动端?

2023-02-13

浮动布局详解

2023-02-10

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>