首页 > 解决方案 > 复杂 NGRX 插入的设计

问题描述

我正在使用以下模型开发功能

class A { 
   id: int
   prop1: string
   b_Id?: number;
   c_Id?: number
}


class B { 
   id: int
   prop2: string
}
//C is like B

在许多情况下,这些操作是分开的,所以我有 a.effects.ts、b.effects.ts、c.effects.ts 等,带有 saveA 效果和 saveB 效果。然而,一项新功能要求我在添加新 a 时可以选择添加新 b 和 c。

我是这种模式的新手,所以我还没有找到处理这个问题的正确方法。目前当然这是触发每个 asynchonosoly 以便 A 在 b 返回之前保存 id。这并不奇怪。

问题一:动作处理

展开有效载荷以进行保存,例如

export class AddA implements Action {
  readonly type = AActionTypes.AddA;

  constructor(public payload: {a: A, b: B, c: C}) {}
}

还是分别发出每个动作?或者创建一个单独的操作并让 saveA 一个人呆着?

问题2:效果

我做了一些链接,但不多。我对此还是很陌生-什么是正确的方法?一个很大的影响,还是将它们链接在一起?我正在寻找符合框架且不是反模式的东西。我不知道那是什么样子。

标签: angularngrx

解决方案


有几种方法可以做到这一点,你看过NgRx:模式和技术(youtube 上也有视频)吗?

Q1:动作是系统中的唯一事件。我会为它创建一个单独的操作。

Q2:取决于它们的“连接”程度,如果这些连接很重,我会选择创建一种效果(或者如果你有这种可能性,只调用一个 API)。


推荐阅读