【问题标题】:ngrx for User Profile CRUD operations用于用户配置文件 CRUD 操作的 ngrx
【发布时间】:2018-09-01 22:49:34
【问题描述】:

我对使用 Redux(反过来,ngrx 用于 Angular/Ionic 项目)进行状态管理的世界有点陌生,但我已经完成了一些示例教程,并且非常喜欢这种方法,并且状态有多持久。

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

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

如果有人能指出正确的方向,我有几个问题:

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

【问题讨论】:

    标签: angular ionic-framework ngrx


    【解决方案1】:

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

    你的 store 的结构应该被规范化,请参阅 redux 文档Normalizing State Shape 或帖子NgRx: Normalizing state。这意味着它看起来像下面这样:

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

    一旦数据存储在存储中,它就可供整个应用程序使用。

    如果这是您所要求的,您将无法从 reducer 调度操作。但是您可以调度多个操作或在多个减速器中使用相同的操作(一个操作被发送到您应用程序中的每个减速器)。

    【讨论】:

    • 我通读了一遍,仍然没有真正解决我对操作的担忧,比如 interests 需要同步到用户个人资料中。
    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 2015-02-15
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多