使用Context API和Redux是否有性能优势?

6 javascript reactjs

我已经阅读了上下文API,它看起来像是一种解决React的单向数据通信问题的优雅方法。

但是,还有Redux可以很好地共享全球状态。

如果我使用上下文API和钩子,将会获得任何性能优势吗?

PS:我读到上下文API,我们将不得不检查渲染,因为它甚至会使整个应用有时重新渲染。

tom*_*nja 6

Context API 最初是为大量读取,少量写入操作而设计的(例如在明暗之间更改主题)

您应该为 1、2 或 3 级深度数据使用 props

感谢您的反对,这是来源

来自reactjs.org

Context 旨在共享可被视为 React 组件树的“全局”数据,例如当前经过身份验证的用户、主题或首选语言。


Context 主要用于在不同嵌套级别的许多组件需要访问某些数据时。谨慎应用它,因为它使组件重用更加困难。

如果您只想避免通过多个级别传递某些道具,组件组合通常是比上下文更简单的解决方案。

  • 您引用的文本没有提到上下文的含义是“高读取和低写入” (3认同)

小智 5

使用-context 配合使用-reducer 来替代 redux 并不是一个好的实践。上下文将导致页面重新加载,如果我们查看 React 开发工具提供的分析器,就会识别出这一点,而 redux 不会这样做。Redux 比 use-context 更适合全局状态管理

  • 但 redux 提供程序是基于 React Context 的。那么你如何支持阿杰的这个论点呢?是否存在有关 redux 与 context + useReducer 的基准? (3认同)
  • 感谢您的回答阿杰。您能否添加一些链接来解释您的答案?或者添加相关的演示示例或屏幕截图? (2认同)

win*_*iz1 5

使用 Redux,您可以使用 4 个辅助函数来微调性能: 所有四个辅助函数都具有一些合理的默认功能,默认情况下您可以从中受益。
areStatesEqual
areOwnPropsEqual
areStatePropsEqual
areMergedPropsEqual

对于钩子,您可以按照此处React.memo的说明使用它来提高性能,但它显然不是默认选项,因此您需要显式使用它。

对于 Context API,我希望我可以说你可以使用,shouldComponentUpdate但我可能不能,因为它属于已经过时的 React 类组件。