为什么 Context API 更新频率比 Redux 差?

Why Context API is worse than Redux for high frequency updates?

看到很多文章说Redux在性能上比高频更新要好于ContextAPI,但是没有具体说明原因。

为什么人们说 Redux 在高频更新方面优于 Context API?

我在我的帖子 Why React Context is Not a "State Management" Tool (and Why It Doesn't Replace Redux), React, Redux, and Context Behavior, and The History and Implementation of React-Redux.

中对此进行了广泛介绍

总结:目前,将新值传递给 <MyContext.Provider> 会强制 每个 订阅该上下文的组件重新呈现。如果一个组件只关心 Context 值的 部分 并且那部分没有改变,就没有办法摆脱困境。

此外,React 目前必须做大量的工作来遍历整个组件树以找出哪些 组件订阅了给定的上下文。

另一方面,React-Redux 依赖于对 Redux 商店的直接订阅。它会在分派操作时运行您的选择器,并且仅在提取的数据已更改时才强制该组件重新呈现。因此,目前,这在大多数情况下提供了比 Context 更好的性能,因为对于给定的更改需要重新渲染的组件更少。

React 团队已经 致力于“上下文选择器”和“惰性上下文传播”的一些潜在实现,这可能有助于在未来加快速度。目前还没有关于何时发布这些内容的时间表。

TL;DR

是的,因为 markerikson 提到的上下文 API re-render 每个订阅的组件。但也有解决方法。

经过一番研究,我找到了这篇文章。 提到了4种方法。我在我的项目中尝试了“容器”。它确实解决了我的性能问题。

https://www.basefactor.com/global-state-with-react