1.初步了解state和setState
需要知道类的state,以及this.setState的参数是一个对象与一个回调函数的区别(如果是对象多次调用会合并,如果是函数下一个setState可以依赖上一个的返回值),以及setState的时候的两个回调函数
2.需要知道一次setState后发生了的事情
渲染的过程:1.render 阶段 render 函数执行 -> 2.commit 阶段真实 DOM 替换 -> 3.setState 回调函数执行 callback 。
3.react更新的时候做优化
① pureComponent 可以对 state 和 props 进行浅比较,如果没有发生变化,那么组件不更新。
② shouldComponentUpdate 生命周期可以通过判断前后 state 变化来决定组件需不需要更新,需要更新返回true,否则返回false。
4.setState原理(后续再了解,还没到源码这个境界)
调用 setState 方法,实际上是 React 底层调用 Updater 对象上的 enqueueSetState 方法。(作者从下面两个问题出发)
- enqueueSetState 到底做了些什么?
- React 底层是如何进行批量更新的?
1.enqueueSetState的作用
2.batchUpdate批量更新
中有一个isBatchingEventUpdates开关,表示是否批量更新
在react自己的事件系统中是开启的,如果在js的原生事件中是会打破这个规则的(例如promise和定时器),当然在js的原生事件中也可以打破这个规则,利用unstable_batchedUpdates(了解即可),以及提高优先级的方法 ReactDOM.flushSync,它会优先执行里面的setState