假设我们有一个应用,其中包含游戏时间表,玩家,团队等部分。您将如何构造应用/功能状态?
我最初的想法是将它们分解为功能状态/模块:
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,
}
...
}
类似于查看团队,您将要查看与该团队关联的玩家...而且,可能只存储了每个团队对playerId的引用。
这些状态/数据中的每一个是否应该真正处于全局状态,而不是每个功能模块都可以从“自顶向下”方法中选择它们的功能状态?功能模块的结构甚至有意义吗?
“跨越”功能模块/状态是否可以接受?
还是我没有考虑过另一种方式?
答案 0 :(得分:1)
通常,这取决于。
个人而言,我想说的是,如果您可以将其拆分成不同的化简器甚至功能,那就去吧。
Reducer只知道其状态,而不是整个应用程序状态,有几种方法可以访问应用程序状态的不同部分:
例如:
{2, 3, 4, 5}
要创建视图模型,如果使用选择器,您确实可以跨功能模块/状态进入。例如,您可以创建一个选择器,将来自不同模块的多个较小的选择器组合在一起。
更多信息: Sharing data between modules is peeanuts The Redux Docs