react生命周期

react组件的生命周期

  • Render 阶段:计算当前的状态,纯净的没有副作用,可能会被react暂停,中止或者重新启动
  • Pre-commit阶段:react把当前的状态映射到DOM时要去更新Dom节点,这个阶段没有实际的更新DOM,但是你是可以读取Dom节点。
  • Commit阶段:react把时间的内容都更新到DOM节点上。
创建时
  • constructor:初始化内部状态,唯一可以直接修改statede 地方
  • getDerivedStateFromProps:可以从外部的属性去初始内部的状态(将传入的props,映射到state上),在每次rending之前调用,意味着即使你的props没有任何变化,而是父state发生了变化,导致子组件发生了re-render,这个生命周期函数依然会被调用。这个生命周期函数是为了替代componentWillReceiveProps存在的,所以在你需要使用componentWillReceiveProps的时候,就可以考虑使用getDerivedStateFromProps来进行替代了。两者的参数是不相同的getDerivedStateFromProps是一个静态函数,也就是这个函数不能通过this访问到class的属性,也并不推荐直接访问属性。而是应该通过参数提供的nextProps以及prevState来进行判断,根据新传入的props来映射到state。如果props传入的内容不需要影响到你的state,那么就需要返回一个null,这个返回值是必须的,所以尽量将其写到函数的末尾。getDerivedStateFromProps(nextProps, prevState)(不推荐使用,因为要维护两者状态一致性,增加复杂度)
  • render:组件唯一必须定义的状态
  • React更新DOM和refs
  • componentDidMount:获取外部资源,比如请求数据之类的,只执行一次
更新时

(这个状态主要是外部传入值有变换或则组件里面的值有变化是发生:new props;setState();forceUpdate(); )

  • getDerivedStateFromProps:同上
  • shouldComponentUpdate (nextProps, nextState):性能优化的重要环节,自己设置是否需要render(返回true会继续render,返回false则不继续rednder)
  • render
  • getSnapshotBeforeUpdate :在render之前调用,state已更行,获取render之前的DOM状态。
  • componentDidUpdate():每次UI更新时被调用,可以捕获每次更新。
卸载时

*componentWillUnmount():资源释放

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值