React6—— react生命周期(新) + 例子

本文详细介绍了React的新生命周期,包括初始化阶段、挂载阶段、更新阶段和卸载阶段的关键方法,如getDerivedStateFromProps、shouldComponentUpdate、getSnapshotBeforeUpdate和componentDidUpdate。并强调了这些方法在不同阶段的作用,如componentDidMount用于执行异步操作,getDerivedStateFromProps用于根据props更新state,以及在组件卸载时进行必要的清理操作以防止内存泄漏。同时,提醒开发者注意生命周期函数的使用规则和避免死循环的问题。
摘要由CSDN通过智能技术生成

生命周期 (新)

在这里插入图片描述

初始化阶段
  • constructor()

类的默认方法,在类中是必须存在的,里边的super()方法是必须的,如果没有定义constructor(),会默认生成一个空的构造器constructor

挂载阶段

(componentWillMount() ->) render() -> componentDidMount()

componentWillMount() ❌:组件挂载之前调用,很少使用, 17.0 版本将会删除)

  • render():是组件中必须定义的,用来渲染DOM,并必须 return 一个React元素(描述组件,即UI)

  • componentDidMount(): 组件完成后调用 ,componentDidMount在渲染过程中永远只有执行一次,一般是在componentDidMount执行副作用,进行异步操作,并在异步请求中可以进行setState;也可以在这里使用refs,获取真实dom元素。

更新阶段

但凡stateprops发生更新,不管是否改变,都会引起子组件重新render

static getDerivedStateFromProps(nextProps, prevState) -> shouldComponentUpdate(nextProps,nextState) -> getSnapshotBeforeUpdate(prevProps, prevState) -> componentDidUpdate(prevProps, prevState)

  • static getDerivedStateFromProps(nextProps, prevState)v16.4新增加的生命周期
    • nextProps表示更新后的 props,prevState表示更新前的 state
    • 根据nextPropsprevState计算出预期的状态改变,返回结果会被送给setState,也就是说我们可以根据propsstate的变化情况来决定返回情况
    • ⚠️这个生命周期函数是一个静态函数,因此是无法访问实例的属性和方法的(就不能使用this
    • 返回值如果是object,就相当于是setState操作;如果是null或者其他基本类型,就不会更新state没有返回值会报错
    • 这是一个例子🌰:
static getDerivedStateFromProps(nextProps, state) {
   
  const param = nextProps.search.substring(1)
  if (param !== state.param) {
   
    return {
   
      param,
      loading: true
    }
  }
  return null;	
};

(componentWillReceiveProps(nextProps )❌17.0 版本将会删除)

  • shouldComponentUpdate(nextProps,nextState)
    • 通过比较nextPropsnextState及当前组件的this.propsthis.state</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值