1
Trello OP 有这方面的文章推荐也行,感觉这方面的资料好少,也可能是我搜索的问题。
|
2
throns 2022-08-03 18:55:36 +08:00 via iPhone
你用的是 react 18 来验证的,react 18 版本的 setState 是 Automatic batching ,你可以去看一下这个新特性。他那篇文章是 20 年的,有些系列不适用 18 版本的
|
3
throns 2022-08-03 19:01:46 +08:00 via iPhone
你可以尝试一下关闭 Automatic batching ,再验证一下那篇博文的正确性。我看了一下,不知道为啥生造了这么多名词,看着真累。只说其然,而不说所以然,真想了解细节建议看源码。
|
4
Trello OP @throns 谢谢大佬,不过这个应该与 react 18 的自动批处理没关系,自动批处理使得在原生事件或异步代码中的 setState 能够批量处理,重渲染一次。我举的例子用的都是 react 合成事件中的 setState ,这个本来就作批处理的,应该没有关系。
|
5
Trello OP @throns 直接看源码对我来说,感觉还是有点困难,大佬有什么推荐的 React 进阶学习途径吗?比如博客、专栏、书籍之类的?最近确实感觉有点瓶颈期了,能写业务,但是对 react 的一些现象还是感到困惑,稀里糊涂的,想提升一下。
|
6
throns 2022-08-03 19:25:44 +08:00 via iPhone
@Trello 感觉有点引流,可以去看一下卡颂的 React 技术揭秘: https://react.iamkasong.com/
|
8
Trello OP 第一个问题没事了,自己想明白了。
懒计算时,更新队列执行顺序依据 useState 声明顺序,然后更新队列内的 setState 依次执行。 立即计算时,不考虑更新队列,根据 setState 顺序依次执行。 我把思考写在这篇博文下面了,感兴趣的可以移步看看。 https://github.com/yaofly2012/note/issues/204 第二个问题主要是懒计算切换立即计算的时机,我还没想通,希望有大佬解惑。 |