Skip to content
{}

基础知识 - 属性与状态的区别

属性vs状态

  • 相似点:

都是纯js对象,都会触发render更新,都具有确定性(状态数据相同,结果相同)

  • 不同点:

TIP

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

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

props 的主要作用是让使用该组件的父组件可以传入参数来配置该组件。它是外部传进来的参数,组件内部无法控制与修改,除非外部组件主动传入新的props,否则组件的props永远保持不变

没有state的组件叫 无状态组件(stateless component)设置了state的叫做 有状态组件(stateful component) 应为状态会带来管理的复杂性,我们尽量多写无状态组件,少写有状态组件。降低维护成本,增加复用性。

好好加油吧,少年!