如何将应用程序设置传递给存储

How to pass application settings to store

就干净的 React 应用程序设计而言,我确定如何将应用程序设置传递给不属于组件树的模块。

例如我连接到 REST API,因此需要将主机名传播到组件,还要传播到商店 - 我正在使用 Reflux。

可以通过上下文轻松实现将设置传递给组件,但由于商店不是其中的一部分,最干净的方法是什么?

到目前为止,我考虑了这些方法:

两者似乎都不适合我。任何提示表示赞赏!

在大多数情况下,您不应保留应用程序设置。

您应该将您的应用程序想象成某种接收状态作为参数和 returns 视图的函数。应用程序状态的变化(通常)会导致结果视图发生变化。 Flux 存储是您保持这种状态的方式。 API 主机名不是您希望影响您的应用程序的东西。它只是一个信息负载,您的应用程序需要知道它才能正常工作(比如配置,而不是设置)。因此,您应该将其保留为信息负载。模块、class、全局变量、某种 DI,你可以考虑任何你觉得有用的东西。

我通常使用所有配置创建单独的模块导出对象。类似于:

const config = {
  api: {
    hostname: 'localhost',
    port: 3000
  }
  // ...
};

export default config;

然后只是导入它。类似于:

import config from "../config";

const api = new API(config.api); // just for example

但如果您确实需要使用某种可能会影响 UI 的设置(例如延迟显示弹出窗口;如果我们考虑根据用户的操作更改此延迟,这个示例会更好) 你应该创建 Settings store 并像使用常规 flux store 一样使用它(订阅更改,更改操作等)。