react各生命周期函数使用场景:

49 篇文章 0 订阅
8 篇文章 0 订阅

1. Constructor(props)

使用场景:初始化局部State或把方法的句柄绑定到实例

注意:第一个语句必须是super(props)

2. GetDerivedStateFromProps(props,state)

使用场景:内部state变化依赖于props时,

注意:不要过度使用该函数。

     如果你的操作依赖于props的更改并有副作用,最好放到ComponentDidUpdate中;

      如果需要根据props的改变更新某些数据,最好使用memoization或Reselect做缓存处理;

   如果你想根据props的改变重置state的值,使用全受控组件或带key的非受控组件    5. shouldComponentUpdate(nextProps, nextState)

 使用场景:性能优化接口

  通过比较this.props与nextProps, 和比较this.state 与 nextState 来返回false阻止组件render

  注意:forceUpdate不会触发该函数

  某些情况可以使用React.PureComponent替代写该函数

  返回false并不会阻止子组件的重新render(如果他们的state改变的时候)

7. Render

使用场景:核心函数,必不可少。返回类型包括:react元素/数组或代码片段/入口/字符串或数字/bool或空。

注意:不能在render函数中调用setState。

   在存活周期中,如果shouldUpdateComponent返回false,该方法不会被调用。

8. getSnapshotBeforeUpdate(prevProps, prevState)

  使用场景:该函数在最终render结果提交到DOM之前被调用

       记录DOM刷新前的特性,如:滚动位置

  注意:该函数的返回值会作为参数传递给ComponentDidUpdate

9. ComponentDidMount

  使用场景:真是DOM被更新之后调用

  在创建组件周期,该函数是异步请求的最佳接口,用以加载数据,AJAX/Fetch/redux-dispatch

   注意:这里也是产生性能问题最多的地方(因代码问题)

10. ComponentDidUpdate(prevProps, prevState, snapshot)

 使用场景:通过比较prevProps或prevState 与 this.props或this.state,进行业务处理,发送网络请求

 注意:在处理业务或发送网络请求时,一定要做条件比较,否则容易造成死循环11. ComponentWillUnmount

  使用场景:组件销毁时调用

  清理无效timer;取消未完成的网络请求;清理已注册的订阅

  注意:在这里setState是无效的

12. componentDidCatch()

使用场景:任何子组件的JS错误或异常发生时触发

     初始化周期和运行时周期的错误都会触发该函数          

     注意:只捕获该组件的所有子组件异常,并不会捕获本身的异常

        在该函数中调用setState以实现错误回滚至前一页面

        不要使用该函数作为业务处理的一部分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值