我通常在Stack上发布与代码相关的内容,但这更多是关于社区的一般思想的问题。
似乎有很多人主张将Redux与React结合使用来管理数据/状态,但是在阅读和学习两者的过程中,我遇到了一些看起来不太正确的事情。
在此页面底部:http : //redux.js.org/docs/basics/UsageWithReact.html(通过商店),建议您使用React“上下文”的“魔术”。
一种选择是将其作为道具传递给每个容器组件。但是,这很繁琐,因为您甚至必须通过演示组件来进行存储,因为它们恰好在组件树中深深地渲染了一个容器。 我们建议的选项是使用特殊的React Redux组件,该组件神奇地使商店可用于所有容器组件…
一种选择是将其作为道具传递给每个容器组件。但是,这很繁琐,因为您甚至必须通过演示组件来进行存储,因为它们恰好在组件树中深深地渲染了一个容器。
我们建议的选项是使用特殊的React Redux组件,该组件神奇地使商店可用于所有容器组件…
在React Context页面(https://facebook.github.io/react/docs/context.html)上,它在顶部有一个警告:
上下文是一项先进的实验功能。该API可能会在将来的版本中更改。
然后在底部:
正如在编写清晰的代码时最好避免使用全局变量一样,在大多数情况下也应避免使用上下文。 不要使用上下文将模型数据通过组件传递。显式地将数据穿入树中很容易理解…
正如在编写清晰的代码时最好避免使用全局变量一样,在大多数情况下也应避免使用上下文。
不要使用上下文将模型数据通过组件传递。显式地将数据穿入树中很容易理解…
Redux建议使用React’Context’功能,而不是store通过’props’ 传递给每个组件。而React建议相反。
store
而且,似乎Dan Abramov(Redux的创建者)现在为Facebook(React的创建者)工作,只是让我更加困惑。
上下文是一项高级功能,随时可能更改。在某些情况下,它的便利性超过了缺点,因此尽管有实验性质,诸如React Redux和React Router之类的某些库还是选择依赖它。
这里的重要部分是单词 库 。如果上下文改变了它的行为, 我们作为图书馆作者将需要进行调整 。但是,只要库不要求您直接使用上下文API,作为用户的您就不必担心对其进行更改。
React Redux在内部使用上下文,但未在公共API中公开这一事实。因此,通过React Redux使用上下文比直接使用上下文要安全得多,因为如果上下文发生更改,更新代码的负担将落在React Redux上,而不是您。
最终,React Redux仍然支持始终传递存储作为道具,因此,如果您要完全避免上下文,则可以选择。但是我会说这是不切实际的。
TLDR:除非您真的知道自己在做什么,否则请避免直接使用上下文。 使用恰好在内部依赖上下文的库相对安全。