关于 React State 的立即计算和懒计算,不太理解,希望大佬能够解惑。

2022-08-03 18:15:48 +08:00
 Trello
主要困惑点

1. 更新队列的先后执行顺序

2. 立即计算和懒计算的切换时机

我在这篇文章下提问了,哪位大佬有时间的,希望能不吝赐教,提前谢过!
https://github.com/yaofly2012/note/issues/204
910 次点击
所在节点    问与答
8 条回复
Trello
2022-08-03 18:36:20 +08:00
有这方面的文章推荐也行,感觉这方面的资料好少,也可能是我搜索的问题。
throns
2022-08-03 18:55:36 +08:00
你用的是 react 18 来验证的,react 18 版本的 setState 是 Automatic batching ,你可以去看一下这个新特性。他那篇文章是 20 年的,有些系列不适用 18 版本的
throns
2022-08-03 19:01:46 +08:00
你可以尝试一下关闭 Automatic batching ,再验证一下那篇博文的正确性。我看了一下,不知道为啥生造了这么多名词,看着真累。只说其然,而不说所以然,真想了解细节建议看源码。
Trello
2022-08-03 19:20:44 +08:00
@throns 谢谢大佬,不过这个应该与 react 18 的自动批处理没关系,自动批处理使得在原生事件或异步代码中的 setState 能够批量处理,重渲染一次。我举的例子用的都是 react 合成事件中的 setState ,这个本来就作批处理的,应该没有关系。
Trello
2022-08-03 19:23:23 +08:00
@throns 直接看源码对我来说,感觉还是有点困难,大佬有什么推荐的 React 进阶学习途径吗?比如博客、专栏、书籍之类的?最近确实感觉有点瓶颈期了,能写业务,但是对 react 的一些现象还是感到困惑,稀里糊涂的,想提升一下。
throns
2022-08-03 19:25:44 +08:00
@Trello 感觉有点引流,可以去看一下卡颂的 React 技术揭秘: https://react.iamkasong.com/
Trello
2022-08-03 19:36:32 +08:00
@throns 好的,谢谢大佬,我后面研读一下,感谢!
Trello
2022-08-04 08:24:36 +08:00
第一个问题没事了,自己想明白了。

懒计算时,更新队列执行顺序依据 useState 声明顺序,然后更新队列内的 setState 依次执行。

立即计算时,不考虑更新队列,根据 setState 顺序依次执行。

我把思考写在这篇博文下面了,感兴趣的可以移步看看。
https://github.com/yaofly2012/note/issues/204

第二个问题主要是懒计算切换立即计算的时机,我还没想通,希望有大佬解惑。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/870479

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX