React生命周期暨子组件获取父组件更新值方法

本文介绍了React组件的生命周期,包括getDefaultProps、getInitialState、componentWillMount、render、componentDidMount、shouldComponentUpdate、componentWillUpdate、componentDidUpdate和componentWillUnmount等方法,强调了在不同阶段可以做什么以及如何优化性能。同时,讨论了在props变化时如何通过componentWillReceiveProps更新组件状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

React生命周期图:
在这里插入图片描述

  • getDefaultProps
  1. 执行过一次后,被创建的类会有缓存(这也是为什么父子组件以props形式传参后,再更新时子组件不会改变的原因),映射的值会存在于this.props;
  2. 该方法在对象被创建前执行,因此不能在方法内调用this.props
  • getInitialState
  1. 组件加载之前执行,返回值会被用于state的初始化值
  • componentWillMount
  1. 执行一次,在初始化render之前执行,如果在这个方法内调用state,render()只会执行一次
  • render

  • componentDidMount

  1. 在初始化render之后只执行一次,在这个方法内,可以访问任何组件,子组件在父组件之前执行
  2. 从这个函数开始,就可以和js其他框架交互了,如设置setTimeOut或发起网络请求等
  • shouldComponentUpdate
  1. 返回boolean布尔值, 默认return true。
  2. 该方法在props或state发生变化时,在render前执行;当新的props或state不需要更新组件时,返回false, render()不会被调用,componentWillUpdate和componentDidUpdate方法也不会被调用。

    可以利用shouldComponentUpdate来优化/提高应用性能;
    同时,在新React中,提供了PureComponent,其内部重写实现了shouldComponentUpdate(),但是要注意,PureComponent对组件的新/旧state和props的数据进行的是浅比较,所以如果state是对象等需要通过函数传递state的方式来更新!

在这里插入图片描述

  • componentWillUpdate
  1. 当props和state发生变化时执行,并且在render方法之前执行;初始化render时不执行。
  2. 在该函数里不能调用this.setState来修改状态;该函数调用后,会把nextProps和nextState分别设置到this.props和this.state中
  • componentDidUpdate
  1. 组件更新接收后执行,初始化render时不执行
  • componentWillReceiveProps
  1. 当props发生变化时执行,在该生命周期里可以根据属性的变化,通过调用this.setState()来更新组件状态;
  2. 旧的属性还是可以通过this.props来获取,这里调用更新状态是安全的,并不会触发额外的render调用
    // 子组件生命周期函数动态监控更新父组件传入的props
    componentWillReceiveProps(nextProps){
        this.setState({
            isModifyUser:nextProps.isModifyUser
        })
    }
  • componentWillUnmount
  1. 当组件要从界面上被移除时,调用该声明周期函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值