React的数据与状态

组件的数据承载 (props属性 | state状态)

props属性一般是从外部传入的,组件内部是不能对外部传入进来的属性进行更改,自己只是拿来用的。
state状态是组件自身定义的,后续组件可以对于自身定义的状态进行更改。
更改state的值
更改state值,不能直接更改,因为直接更改的话视图不会同步的渲染
对于状态的改变我们可以使用setState的方法去改变组件自身的状态。

this.setState({
        key:新的value值
    }[,callback])

setState更改状态,是异步的。所以后续获取不到组件更新后的最新状态。
如果想要获取组件最新的状态,需要再setState的callback回调函数中获取即可。

注意:上面的写法有一个问题,连续执行多次其实内部进行了对象的合并操作。解决这个问题的方法:

  this.setState((prevState)=>{
        return {
            key:新的value值  
        }
    },[,callback])

属性和状态的对比

**相似点:**都是纯js对象,都会触发render更新,都具有确定性(状态/属性相同,结果相同)

不同点:

  1. 属性能从父组件获取,状态不能
  2. 属性可以由父组件修改,状态不能
  3. 属性能在内部设置默认值,状态也可以
  4. 属性不在组件内部修改,状态可以
  5. 属性能设置子组件初始值,状态不可以
  6. 属性可以修改子组件的值,状态不可以

state的主要作用是用于组件保存、控制、修改自己的可变状态。**state在组件内部初始化,可以被组件自身修改,而外部不能访问也不能修改**。你可以认为state是一个局部的、只能被组件自身控制的数据源。**state中状态可以通过this.setState方法进行更新,setState` 会导致组件的重新渲染。**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值