ngrx用于用户配置文件CRUD操作

时间:2018-09-01 22:49:34

标签: angular ionic-framework ngrx

我对使用Redux(对于Angular / Ionic项目,依次使用ngrx)进行状态管理感到有些陌生,但是我已经完成了一些示例教程,并且非常喜欢这种方法,以及状态的持久性。

但是,到目前为止,我发现的任何示例都没有涵盖我所遇到的一些问题。给定Profile模型:

export class Profile {
   public id?: string;
   public name?: string;
   public interests?: Interest[];
   public jobs?: Job[];
}

如果有人能指出正确的方向,我会提出一些疑问:

  1. 创建商店和州的最佳方法是什么?我是否应该创建一个大型商店来完成从检查身份验证到添加/删除jobsinterests的所有工作?
  2. 无论如何,我可以在商店之间共享这个Profile状态对象吗?
  3. 我应该分别管理interestsjobs的状态,然后在准备好同步用户时使用操作来更新用户的个人资料,并从应用程序的状态中获取这些值吗?
  4. 一个商店(例如SaveInterests中的InterestsActions)的动作可以调用另一个商店(例如SaveInterests => SaveProfile)中的动作吗?

1 个答案:

答案 0 :(得分:0)

在典型的redux或ngrx应用程序中,您只会看到一个商店。您的应用程序的状态将表示为一个大的JavaScript对象。有关更多信息,请参见redux文档Three PrinciplesCore Concepts

您商店的结构应规范化,请参阅redux文档Normalizing State Shape或帖子NgRx: Normalizing state。这意味着它看起来类似于以下内容:

{
  profiles: {...},
  interests: {...},
  jobs: {...},
}

一旦数据存储在商店中,它就可用于整个应用程序。

如果这是您要的操作,则您将无法从reducer调度动作。但是您可以调度多个动作,也可以在多个化简器中使用同一动作(一个动作将发送到应用程序中的每个化简器)。