我的应用程序中有一些状态来自服务器,并且不会改变(在用户会话的生命周期中)。该状态在HTML中引导。我应该在商店中存储永不改变(自举)数据吗?
我应该将它作为商店的一部分并入减速机吗? const bootstrappedData = (state, action) => state
或者我应该公开一些像bootstrappedData.get('key')
这样的全球帮手吗?
我的应用程序中有一些状态来自服务器,并且不会改变(在用户会话的生命周期中)。该状态在HTML中引导。我应该在商店中存储永不改变(自举)数据吗?
我应该将它作为商店的一部分并入减速机吗? const bootstrappedData = (state, action) => state
或者我应该公开一些像bootstrappedData.get('key')
这样的全球帮手吗?
有趣的是,我昨天刚刚在我自己的商店中发布了关于数据的相同决定。我得出的结论是,我们只应将有状态的数据存储在Redux存储中,即能够维护状态的数据或可能发生更改的数据。静态数据根据定义没有状态,因此不需要像这样跟踪。
因此,我通常有一个/common/app-const.js
文件,我在这里存储这些类型的静态对象。例如,我在这里存储了Redux的DEFAULT_STATE
,但也存储了其他一些不会更改的对象(因此不会在Redux中进行跟踪)。
现在,让我们说其实我是想允许最终用户操纵numRows
和numCols
在UI,以及在这一点上我一定会需要把这些在终极版商店,但不是现在,因为他们只是静态的常量!
/common/app-const.js
export const DEFAULT_STATE = {
model: {},
timer: {
isRunning: false,
ticks: 0
}
};
export const GRID_DATA = {
numRows: 50,
numCols: 75,
};
每当我需要这个静态的数据,这是作为一个导入一样容易:
import { GRID_DATA } from '../common/app-const';
略与此相关的问题是异步(不是自举),而是静态数据,因此,存储数据到存储区域与存储区域之外是有折衷的。
店内
的观光
console.log
缺点
商店
外PROS
缺点
我做了一个大型的生产应用了前一种方式,并且将多回想起来,已经完成了后者。