今天和大家聊一聊React如何实现批量状态更新。
引子
我们知道React的setState方法并不是同步执行的。
在React的生命周期中发生的多次setState的变更会进行合并,最终减少推送给浏览器的DOM变更次数,从而提升前端性能。
那么这部分到底是怎么实现的呢?我们来看下
Transaction
在React执行点击事件或者生命周期函数时,会使用一个Transaction对象将整个执行过程包裹成一个事务。
Transaction对象结构如下图所示
<pre>
* wrappers (injected at creation time)
* + +
* | |
* +-----------------|--------|--------------+
* | v | |
* | +---------------+ | |
* | +--| wrapper1 |---|----+ |
* | | +---------------+ v | |