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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容