React 较难理解的生命周期钩子函数

本文详细介绍了React中的关键生命周期方法,包括constructor、componentWillReceiveProps、shouldComponentUpdate及componentWillUnmount的作用、执行时机及其注意事项。
摘要由CSDN通过智能技术生成
1.   constructor

在react中,class 里的constructor 方法 用来初始化state和绑定事件方法
其中,super作为方法执行父类的构造函数,参数为props 即接受父组件传入的props

如果没有执行super, react会报错

  1. componentWillReceiveProps(nextProps)

执行时间:当一个已mount的react组件接收到新的props的时候会自动调用该钩子
参数:nextProps

注意:
即使props没有改变,该方法也可能会被调用,因此需要将新旧props值进行对比然后操作
在组件mounting阶段,该方法不会被掉起,setState 也不会触发该方法

// 更新子组件中的state,当查询参数变化的时候  
componentWillReceiveProps(nextProps) {
    if (JSON.stringify(nextProps.query) !== JSON.stringify(this.props.query)) {
      this.setState({
        hasmore: true,
        loading: false,
        count: 0,
        page: nextProps.page,
      }, () => {
        this.listener();
        this.autoLoad(nextProps);
      });
    }
  1. shouldComponentUpdate (nextProps,nextState)

执行时间:当的判断state或者props 的变化 是否影响组件的output的时候
返回true 表示不影响,即组件正常执行render方法
返回false 表示影响, 即组件不执行render方法,但返回false不会阻止子组件在其状态更改时重新呈现
注意:
返回false 会阻止 componentWillUpdate,render,componentDidUpdate 的调用,未来react可能会削弱这种强阻止的行为,该用提示的形式。

初始化render的时候或者执行forceUpdate的时候,不会执行该方法。

 shouldComponentUpdate(nextProps, nextState) {
    if (this.props.children === nextProps.children) { 
      return false;
    }
    return true;
  }
  1. componentWillUnmount()

执行时间:当component被unmounted 和destroyed 的时候

在这个钩子函数内部 可以取消 componentDidMount方法中定义的 定时器,网络请求,以及DOM元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值