从源码的角度看 React JS 中批量更新 State 的策略(上)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从源码的角度看 React JS 中批量更新 State 的策略(上),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1831字,纯文字阅读大概需要3分钟。
内容图文
在之前的文章「深入理解 React JS 中的 setState」与 「从源码的角度再看 React JS 中的 setState」 中,我们分别看到了 React JS 中 setState 的异步表现,并从源码的角度简单地了解了 React 中 setState 的设计结构以及原理。
这篇文章继上篇文章后,继续从源码的角度来了解 React 中对 State 批量更新策略的定义。
同样,源码的部分为了保证格式正常就直接截图了,查看源码点击对应的链接直接跳转至 GitHub 查看即可。
1. setState 的源码实现
在 setState 的源码实现中,传递过来的参数就被定义成了 partialState
,从参数名以及参数的说明中就可以看到,这只是 state 的一部分。
默认都会调用 this.updater.enqueueSetState(this, partialState)
将 state 放进更新队列中去。
而如果有传递回调函数过来的话,会执行 this.updater.enqueueCallback(this, callback)
,涉及到回调函数的部分,我们后续文章会继续进行分析。
2. 更新队列 ReactUpdateQueue 的定义
在上面的 setState
定义中,我们可以看到有一个 updater
的调用。
具体的定义如下。
而初始的 updater
的定义如下。
这样最终的更新队列都指向了 ReactUpdateQueue 的源码定义中。
3. ReactUpdateQueue 中的 enqueueSetState
我们可以看到 ReactUpdateQueue 中的 enqueueSetState
的定义。
继续去跟 enqueueUpdate(internalInstance)
的实现。
4. ReactUpdates 中的 enqueueUpdate
到这里,我们回到了上篇文章看到 ReactUpdates 的位置。
我们继续看函数开始的部分,注入的两个部分。
注入了两个部分,ReactReconcileTransaction
以及 batchingStrategy
。
ReactReconcileTransaction 主要用于在更新 state 时,页面 UI 元素的修正以及在执行生命周期函数时,处理好生命周期函数与其他用户自定义函数之间的执行顺序与逻辑,具体的实现可以参考它的源码。
ReactReconcileTransaction 源码地址
到这里,我们从 setState 的定义开始,梳理好了在进行更新策略前的逻辑部分,下篇文章,我们将直达 batchingStrategy 的内部实现,看看 React 的更新逻辑策略的实现。
DevOpenClub 发布了36 篇原创文章 · 获赞 0 · 访问量 492 私信 关注内容总结
以上是互联网集市为您收集整理的从源码的角度看 React JS 中批量更新 State 的策略(上)全部内容,希望文章能够帮你解决从源码的角度看 React JS 中批量更新 State 的策略(上)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。