首页 > 解决方案 > 为什么 Context API 在高频更新方面比 Redux 差?

问题描述

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

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

标签: reactjsreduxreact-context

解决方案


我在我的帖子Why React Context is Not a "State Management" Tool (and Why It doesn't Replace Redux)React、Redux 和 Context Behavior以及React-Redux 的历史和实现中对此进行了广泛的讨论。

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

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

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

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


推荐阅读