Appearance
类组件的更新
本节目标:理解“类组件的更新”的核心思路,并能把它用于实际开发或面试表达。 先讲类组件的更新,函数组件的更新放到hooks中去了解;
在组件挂载之后,如果组件的props或自身的State发生了变化,如
- 如接口返回数据;
- 交互事件的发生;
会打破组件的稳定状态,从而需要更新组件,进而需要更新dom;
组件状态
- 组件的数据来源有两个地方,分别是属性对象和状态对象
- 属性是父组件传递过来的;
- 状态是自己内部的,改变状态唯一的方式就是
setState;; - 属性和状态的变化都会影响视图更新;
- 不要直接修改
State,构造函数是唯一可以给this.state赋值的地方;
先了解类组件自身State值的变化引起的更新;我们一般会在:
- 事件回调
- 生命周期函数中
更新类组件的状态,更新类组件的状态必须使用setState方法;
State 的更新会被合并 当你调用 setState() 的时候,React 会把你提供的对象合并到当前的 state;
State的更新可能是异步的- 出于性能考虑,
React可能会把多个setState()调用合并成一个调用 - 因为
this.props和this.state可能会异步更新,所以你不要依赖他们的值来更新下一个状态; - 可以让
setState()接收一个函数而不是一个对象。这个函数用上一个state作为第一个参数;
- 出于性能考虑,
有时异步更新,有时同步更新的原因在于两种更新方式不在同一个事件循环里;
