Ste*_*ast 87 javascript reactjs redux
我通常在Stack上发布代码相关的东西,但这更多的是关于社区的一般想法是什么的问题.
似乎有很多人主张使用Redux和React来管理数据/状态,但是在阅读和学习两者时,我遇到了一些看起来不太合适的东西.
在本页的底部:http://redux.js.org/docs/basics/UsageWithReact.html(传递商店)它建议使用React'Context'的"Magic".
一种选择是将其作为道具传递给每个容器组件.然而,它变得乏味,因为你必须通过表示组件连线存储,因为它们碰巧在组件树中深层渲染容器.
我们建议的选项是使用一个特殊的React Redux组件,该组件可以神奇地使商店可用于所有容器组件......
在React Context页面(https://facebook.github.io/react/docs/context.html)上面有一个警告:
上下文是一种先进的实验性功能.API可能会在将来的版本中发生变化.
然后在底部:
正如在编写清晰代码时最好避免使用全局变量一样,在大多数情况下应避免使用上下文...
不要使用上下文通过组件传递模型数据.明确地通过树线处理数据更容易理解......
Redux建议使用React'Context'功能,而不是store通过'props' 将其传递给每个组件.虽然React建议相反.
此外,似乎Dan Abramov(Redux的创建者)现在为Facebook(React的创建者)工作,只是为了让我更加困惑.
Dan*_*mov 87
上下文是一项高级功能,可能会发生变化.在某些情况下,它的便利性超过了它的缺点,所以一些像React Redux和React Router这样的库选择依赖它,尽管它具有实验性质.
这里的重要部分是库这个词.如果上下文改变了它的行为,我们作为库作者需要进行调整.但是,只要库不要求您直接使用上下文API,您就不必担心对其进行更改.
React Redux在内部使用上下文,但它不会在公共API中公开这一事实.所以你应该通过React Redux使用上下文比直接感觉更安全,因为如果它发生变化,更新代码的负担将在React Redux而不是你.
最终React Redux仍然支持将商店作为道具传递,所以如果你想完全避免上下文,你就有了这个选择.不过我会说这是不切实际的.
TLDR:除非您真正了解自己在做什么,否则请避免直接使用上下文.使用恰好依赖于内部上下文的库是相对安全的.
我不知道其他人,但我更喜欢使用 react-redux 的连接装饰器来包装我的组件,以便只有我需要的商店中的道具才能传递到我的组件中。这在某种意义上证明了使用上下文是合理的,因为我没有使用它(而且我知道,作为一项规则,我负责的任何代码都不会使用它)。
当我测试我的组件时,我会测试未包装的组件。因为 react-redux 只传递了我在该组件上需要的 props,所以我现在在编写测试时确切地知道我需要什么 props。
我想重点是,我从来没有在我的代码中看到过上下文这个词,我不使用它,所以在某种程度上,它不会影响我!这并没有说明 Facebook 的“实验性”警告。如果上下文消失,在 Redux 更新之前,我会和其他人一样被搞砸。
| 归档时间: |
|
| 查看次数: |
13521 次 |
| 最近记录: |