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

时间:2019-09-08 10:21:27

标签: javascript reactjs

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

不过,还有Redux可以很好地共享全局状态。

如果我使用上下文API和钩子,是否可以获得任何性能优势?

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

3 个答案:

答案 0 :(得分:0)

Context API最初旨在用于大量读取,少量写入操作(例如,在明暗之间更改主题)

您应该将道具用于1、2或3级深度数据

谢谢你的投票,这是消息来源

来自reactjs.org

上下文被设计为共享可被视为React组件树(例如当前经过身份验证的用户,主题或首选语言)的数据的“全局”数据。


上下文主要用于需要不同嵌套级别的许多组件访问某些数据的情况。谨慎地应用它,因为它会使组件的重用变得更加困难。

如果您只想避免一些道具通过多个关卡,则组成组件通常是比上下文更简单的解决方案。

答案 1 :(得分:0)

使用Use-context和Use-reducer替换redux不是一个好习惯。上下文会导致页面的重新加载,如果我们查看一下react dev工具提供的事件探查器,就会被识别出来,因为redux不会这么做。 对于全局状态管理,Redux比使用上下文更好

答案 2 :(得分:0)

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

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

我希望可以使用Context API来使用shouldComponentUpdate,但是我可能不能,因为它属于过时的React类组件。