我已经阅读了上下文API,这看起来是解决react的单向数据通信问题的一种优雅方法。
不过,还有Redux可以很好地共享全局状态。
如果我使用上下文API和钩子,是否可以获得任何性能优势?
PS:我读到上下文API,我们将不得不检查渲染,因为它甚至有时会重新渲染整个应用程序。
答案 0 :(得分:0)
Context API最初旨在用于大量读取,少量写入操作(例如,在明暗之间更改主题)
您应该将道具用于1、2或3级深度数据
谢谢你的投票,这是消息来源
上下文被设计为共享可被视为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类组件。