我通常会在 Stack 上发布与代码相关的内容,但这更多的是关于社区的一般想法的问题。
似乎有很多人提倡使用 Redux 和 React 来管理数据/状态,但是在阅读和学习两者的过程中,我遇到了一些看起来不太正确的事情。
终极版
在此页面的底部: http ://redux.js.org/docs/basics/UsageWithReact.html(通过商店)它建议使用 React ‘Context’ 的“魔法”。
一种选择是将它作为 prop 传递给每个容器组件。然而,它变得乏味,因为您甚至必须通过表示组件连接存储,只是因为它们恰好在组件树深处呈现容器。
我们推荐的选项是使用一个特殊的 React Redux 组件调用来神奇地使商店对所有容器组件可用……
反应
在 React 上下文页面 ( https://facebook.github.io/react/docs/context.html ) 顶部有一个警告:
上下文是一项高级和实验性功能。 API 可能会在未来的版本中发生变化。
然后在底部:
正如在编写清晰的代码时最好避免全局变量一样,在大多数情况下你应该避免使用上下文……
不要使用上下文通过组件传递模型数据。通过树显式地线程化数据更容易理解……
所以…
Redux 建议使用 React 的“上下文”功能,而不是通过“道具”将 store
向下传递到每个组件。而 React 则相反。
另外,似乎 Dan Abramov(Redux 的创建者)现在为 Facebook(React 的创建者)工作,只是让我更加困惑。
- 我读得对吗..?
- 目前关于这个问题的普遍共识是什么……?
原文由 Stephen Last 发布,翻译遵循 CC BY-SA 4.0 许可协议
上下文是一项高级功能,可能会发生变化。在某些情况下,它的便利性超过了缺点,因此尽管具有实验性质,但一些库(如 React Redux 和 React Router)选择依赖它。
这里的重要部分是单词 libraries 。如果上下文改变了它的行为, _我们作为图书馆作者将需要调整_。但是,只要库不要求您直接使用上下文 API,作为用户的您就不必担心对其进行更改。
React Redux 在内部使用上下文,但它不会在公共 API 中公开这一事实。所以你应该觉得通过 React Redux 使用上下文比直接使用上下文更安全,因为如果它发生变化,更新代码的负担将落在 React Redux 而不是你身上。
最终 React Redux 仍然支持始终将 store 作为 prop 传递,所以如果你想完全避免上下文,你可以选择。但是我会说这是不切实际的。
TLDR:除非您真的知道自己在做什么,否则请避免直接使用上下文。使用恰好在内部依赖上下文的库是相对安全的。