假设我们有一个包含游戏时间表、玩家、团队的应用程序。您将如何构建应用程序/功能状态?
我最初的想法是将它们分解为功能状态/模块:
app/
├── games/
│ ├── store/
│ └── games.module.ts
├── players/
│ ├── store/
│ └── players.module.ts
├── teams/
│ ├── store/
│ └── teams.module.ts
└── app.module.ts每个特性负责每种类型的数据(游戏、球员、团队)的CRUD方法。
但在比赛中,你会想要列出哪些球队打过.而且您很可能只存储了游戏状态中每个队的引用:
games: {
game1Id: {
home: team1Id,
away: team2Id,
}
...
}同样地,对于观看球队,你会希望看到与球队相关的球员.同样,很可能只为每个团队存储对playerIds的引用。
这些状态/数据中的每一种是否真的处于全局状态,而不是每个功能模块可以从“自顶向下”方法中选择它们的特性状态?功能模块的结构是否有意义?
或者“跨越”功能模块/状态是可以接受的?
或者还有其他我没想过的方法?
发布于 2018-11-20 07:03:24
和往常一样,这要看情况。
就我个人而言,我会说,如果你能把它分成不同的减速机,甚至特性--去吧。
还原器只知道它的状态,而不知道整个appstate,有一些方法可以访问应用程序状态的不同切片:
例如:
switch (action.type) {
case "FOO":
return fooReducer(state, action);
case "BAR":
return barReducer(state, action);
default:
return state;
}要创建视图模型,如果使用选择器,您确实可以跨越功能模块/状态。例如,您可以创建一个选择器,将来自不同模块的多个较小的选择器组合起来。
更多信息:模块之间的数据共享是 Redux文档
https://stackoverflow.com/questions/53383125
复制相似问题