setState梳理

setState是同步代码,但是react异步实现了他

在react生命周期中,setState会先经历将state,和callback放入队列中,然后将要更新的组件放入数组中,放入的过程中执行判断isBatchingUpdates是否为true,如果不为true,且在生命周期初始化或者更新中,则将isBatchingUpdates置为true,如果不在生命周期函数中,则直接执行更新操作,如果是true,则将其置入dirty components中,之后一起更新。

更新是以事务的方式来进行的,通过perform进入,再进行初始化initialize方法,执行perform里的callback,最后执行close方法。perform的callback就是执行enqueueUpdate,由于之前已经将isBatchingUpdates置为true了,所以会将这个加入到dirty components中,事务中注册了两个wrapper,一个是用来管理isBatchingUpdates,另一个就是用来更新dirty components,执行performUpdateIfNecessary来刷新view,同时执行之前的callback

你可能感兴趣的:(setState梳理)