Angular NGRX-更新相关数据

时间:2018-10-25 15:07:39

标签: angular ngrx

说我有一个实体Tag。此实体是递归的,这意味着Tag可以具有子{Tag(s)

Tag {
  id: string,
  childrenIds: string[]
}

此实体用于EntityState<Tag>,因此已被规范化。
我正在使用MatTree来显示此层次结构,并且在创建Tag作为另一个Tag的孩子时,我触发了一个事件:

emitTagCreated(parentId: string, newTagId: string): void {
   this.tagCreated.emit({ parentId, newTagId })
}

此事件随后被父级Component捕获,后者调用Store.dispatch()

应该发生两件事:

  1. Tag插入了Store
  2. 父级 Tag的{​​{1}}数组属性已更新,并推送了新的childrenIds的ID

提问时间:
我应该Tag单个dispatch()传递复合有效载荷并将其集中在Action的switch分支中,还是应该Reducer两个dispatch():用于Action的创建,并且用于Tag的更新和处理,作为不同的Tag的操作?

1 个答案:

答案 0 :(得分:1)

恕我直言,这里最好调度一次,这样会使事情变得更清楚。

另外,当您创建2个动作时,您或团队成员可能会忘记在其他情况下触发第二个动作,从而导致状态不佳。