【问题标题】:Correct way to load config into Redux application将配置加载到 Redux 应用程序的正确方法
【发布时间】:2017-09-14 02:43:47
【问题描述】:
我需要在我的应用程序启动之前读取 config.json 文件。
此配置包含我的后端服务的 url。这将用于 redux action-creators。
我有两种方法:
- 获取 json 并将数据保存到状态。而不是从状态获取网址
变成反模式的动作创建者
- 获取json并定义
数据作为全局变量。比我可以从我的访问全局变量
动作创造者。
我该怎么办?
【问题讨论】:
标签:
javascript
reactjs
webpack
redux
【解决方案1】:
您可以考虑以下解决方案:
- 从配置文件中获取数据,并在运行时将其结果保存在名为 config.js 的模块(单音)中
- 在您的应用程序中导入 config.js(很可能在您委托服务器获取操作的 api 模块中)。
IMO 这种方法的主要优点是不会污染全局命名空间,并且可以使用单独的模块保持清洁。
这种方法最适合静态或动态配置。
老实说,不确定您的商店是否是保存配置的正确位置,因为 AFAIK 它是为维护应用程序的状态树而设计的,因此如果您的配置处于某种动态状态,则可以将其视为正确的位置。
【解决方案2】:
-
我将获取 json 文件并将其定义为全局变量
fetch('config.json').then(data => window.CONFIG = data)
-
如果配置文件包含一些与 UI 相关的数据,您可以在 store 中将其设置为 intialState
常量初始状态 = {
配置:window.CONFIG
}
【解决方案3】:
我会选择方法 2,因为它是您应用的 config 而不是 state。它在运行时不会改变。
但我不确定您的应用是什么样子,如果您的配置确实动态更改,那么将其放入 redux 商店对我来说是有意义的。