首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGRX根/全局状态与交叉选择特征状态

NGRX根/全局状态与交叉选择特征状态
EN

Stack Overflow用户
提问于 2018-11-19 21:48:55
回答 1查看 3.2K关注 0票数 5

假设我们有一个包含游戏时间表、玩家、团队的应用程序。您将如何构建应用程序/功能状态?

我最初的想法是将它们分解为功能状态/模块:

代码语言:javascript
复制
app/
├── games/
│   ├── store/
│   └── games.module.ts
├── players/
│   ├── store/
│   └── players.module.ts
├── teams/
│   ├── store/
│   └── teams.module.ts
└── app.module.ts

每个特性负责每种类型的数据(游戏、球员、团队)的CRUD方法。

但在比赛中,你会想要列出哪些球队打过.而且您很可能只存储了游戏状态中每个队的引用:

代码语言:javascript
复制
games: {
  game1Id: {
    home: team1Id,
    away: team2Id,
  }
  ...
}

同样地,对于观看球队,你会希望看到与球队相关的球员.同样,很可能只为每个团队存储对playerIds的引用。

这些状态/数据中的每一种是否真的处于全局状态,而不是每个功能模块可以从“自顶向下”方法中选择它们的特性状态?功能模块的结构是否有意义?

或者“跨越”功能模块/状态是可以接受的?

或者还有其他我没想过的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-20 07:03:24

和往常一样,这要看情况。

就我个人而言,我会说,如果你能把它分成不同的减速机,甚至特性--去吧。

还原器只知道它的状态,而不知道整个appstate,有一些方法可以访问应用程序状态的不同切片:

  • 将其添加到已分派的操作中
  • 使用redux所称的"case函数“还原器创建一个处理这两种状态的减速器。

例如:

代码语言:javascript
复制
switch (action.type) {
   case "FOO":
     return fooReducer(state, action);
   case "BAR":
     return barReducer(state, action);
   default:
     return state;
}

要创建视图模型,如果使用选择器,您确实可以跨越功能模块/状态。例如,您可以创建一个选择器,将来自不同模块的多个较小的选择器组合起来。

更多信息:模块之间的数据共享是 Redux文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53383125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档