【问题标题】:Is using Context for communication between components discouraged?是否不鼓励使用 Context 进行组件之间的通信?
【发布时间】:2018-10-03 09:28:56
【问题描述】:

在阅读了有关上下文 (https://reactjs.org/docs/context.html) 的官方文档后,我觉得它的使用应该主要限于当我们有一些变量我们可以认为是“全局”的情况下,我们必须将这些变量发送到不同嵌套的许多组件级别(如当前主题、语言环境、当前经过身份验证的用户)。

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

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

我想使用 Context 来促进组件树中相距较远的组件之间的通信。许多用户为此使用 Redux(尽管这不是它的主要目的),但同样不鼓励这种做法,即使与 React 一起使用时(通过 react-redux 包),这种方法在内部由 Context 提供支持。

Context 与 redux + react-redux 相比有什么缺点(除非 Redux 有不同的更新状态的方式),这应该让我在所描述的场景中不使用 Context?文档说它使组件重用变得更加困难。它是如何做到的,这个 con 不也与 redux + react-redux duo 相关吗?

【问题讨论】:

    标签: reactjs redux react-context


    【解决方案1】:

    不气馁,可用于不同嵌套级别的组件通信。

    Context 与 redux + react-redux 相比有什么缺点(除非 Redux 有不同的更新状态的方式),这应该让我在所描述的场景中不使用 Context?文档说它使组件重用变得更加困难。

    React 上下文调试起来不太方便,因为它目前无法使用 Redux 开发工具。可以观看an issue,但任何可能的解决方案都无法涵盖通过使用回调函数执行的上下文 API 进行的交互,例如this modal example,同时可以跟踪调度的 Redux 操作。

    文档没有解释为什么它难以重用,“难”是主观的。依赖于上下文的组件对组件层次结构中的各个Provider 施加隐藏的依赖。它与它松散耦合,但如果没有预期的提供值,它可能会发生故障;如果没有ProviderConsumer 仍然使用undefined 值呈现,如果没有手动值验证,则无法更改此行为。

    【讨论】:

      【解决方案2】:

      我对你的问题不够清楚。但是考虑到您所说的 react docs 的声明,

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

      我可以从文档中看到caveat:您可能需要提升状态。

      在你的项目中使用 context api 之前,有一些事情需要考虑,如果你不这样做,你可能会失败。我认为这是因为您可以记住“谨慎应用它,因为它使组件重用变得更加困难”这一说法。文档中概述了以下几点,您可以如何使用上下文 api,可以将其视为重用组件以满足各种需要:

      你可能会明显感觉到困难。否则,我可以看到,它可以用于我们可以用 redux 做的事情,除了 redux 记录器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-05
        • 2010-11-06
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 2011-12-19
        • 2019-08-22
        相关资源
        最近更新 更多