【问题标题】:React lib overriding your web app contextReact lib 覆盖您的 Web 应用程序上下文
【发布时间】:2020-01-16 20:11:00
【问题描述】:

我想知道有关反应上下文的良好模式。

让我们获取一个公共库,例如react-intl,它公开了一个提供程序(IntlProvider)。 让我们创建一个库barLib,它使用react-intl 在内部管理翻译,并且还公开了Provider。 现在让我们假设我创建了一个 Web 应用程序并同时使用 barLibreact-intl

我不希望 barLib 覆盖我的 react-intl 上下文,因为我不知道它在内部使用 react-intl 库。 但是barLib 可能会意外覆盖 react-intl 上下文 => https://codesandbox.io/s/embedded-contexts-test-z8e7b

这有点打破了 IMO 库的隔离。

我看到了几个解决方案:

  • 不要在 barLib 中使用其他 lib 上下文(非常极端)
  • 检查barLib 中是否还没有国际上下文,如果有,合并上下文值?

我对这两种解决方案都不信服,你们怎么看?

【问题讨论】:

    标签: javascript reactjs react-context


    【解决方案1】:

    在对此进行了更多思考之后。我认为您应该将 react-intl 库标记为 barLib 中的对等依赖项,并记录要使用 barLib 的事实,您需要将其包装在 react-intl 上下文中。

    总之,如果你想在你的库中使用上下文,只需将其设置为对等依赖项,不要将 Provider 放入其中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多