我应该在redux中存储静态配置吗?

ask*_*ike 8 reactjs redux

我正在构建一个react/redux web应用程序,我想知道我应该从哪里得到永远不会改变的静态配置信息(当webapp正在运行时).

这是有问题的数据

此信息用于应用程序的不同部分,例如:有一个表单,您可以从主数组中选择任何项目,并通过这样做填充另一个具有所选数组属性的选择字段:

<select>Choose an exchange</select>
<select>Choose a market (that is available in the above exchange)</select>
Run Code Online (Sandbox Code Playgroud)

这将很好地适用于某些reducer逻辑(state.markets根据第一个中选择的内容进行设置select),但是它应该根据树中的其他状态进行过滤,还是只将数据加载到reducer内的闭包中(保持所有内容不相关)国家树)?或者这根本不是状态(并且容器应该加载此文件并根据单个state.exchange状态道具过滤)?

填写表单时,结果将被处理为:

{exchange: 'a', market: 'b'}
Run Code Online (Sandbox Code Playgroud)

所以这也是状态(我猜?)

lux*_*lux 8

我的理解redux是,我们应该只在 中存储有状态的数据store,即可能会发生变化的数据。根据定义,静态数据没有状态,因此不需要进行跟踪。

因此,我通常有一个/common/app-const.js文件来存储这些类型的静态对象。在您的情况下,您可以简单地将所有静态数据从exchange.js一个公共文件中移动到import您需要的任何地方。

/common/app-const.js

export default {
    markets: [
          { pair: ['USD', 'BTC'], minimalOrder: { amount: 0.01, unit: 'asset' } },
          { pair: ['RUR', 'BTC'], minimalOrder: { amount: 0.01, unit: 'asset' } },
          { pair: ['EUR', 'BTC'], minimalOrder: { amount: 0.01, unit: 'asset' } },
          ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我理解您的方法,通过connect()via简单地注入数据​​会很好react-redux,但是import在需要的地方仅从文件中获取静态数据会更直接一些。

  • 最后一段中的一句话,虽然它更“直截了当”,但静态数据文件的导入语句会对该文件产生非常强的依赖性。Redux 在这方面提供了一种依赖注入的形式。 (3认同)