react事务机制,混合setState
1.react的事务,几乎贯穿了react所有提供调用的方法。生命周期,事件,setState。我这里只讨论事件触发的事务。
2.react的事件因为是合成事件,灵活性很大,在运行绑定事件方法之前,就运行了react自动的很多方法,其中就包括事务方法。
每个事件在开始的时候会更改isBatchingUpdates的状态,并且返回给事件返回一个经过重写之后的方法transaction.perform
其中method就是react合成事件方法,closeAll里面是更改isBatchingUpdates的状态方法
而事务与setState的关系。当setState开始更新组件当时候,会根据事务当状态来判定,是否等当前当方法执行完毕才进行更新。
当一个方法内有两个setState进行的时候,react-dom会根据isBatchingUpdates状态来进行判定,是否更新两次组件
如果开启来事务isBatchingUpdates状态,则不进行直接更新,而是等待事件方法执行完成之后一次性更新。
当代码异步调用当时候,因为主线程执行完毕,isBatchingUpdates状态完成了一次事务,还原成来初始状态。而异步不会触发事务更改isBatchingUpdates当状态,所以异步里面的代码是调用一次setState就更新一次状态。
那么redux触发action如果不是异步,也是向上面一样多次action一次更新。