在一个 NgRx 中组合效果

combine effects in one NgRx

我也有类似的效果,想合二为一不知道怎么做

这是我的效果(我需要传递不同的 id 取决于动作类型):

setTopics$ = createEffect(
  () => this.actions$.pipe(
    ofType(setTopics),
    map((action) => 
      this.service.set(action.payload.id))),
  { dispatch: false });

setHeadlines$ = createEffect(
  () => this.actions$.pipe(
    ofType(setHeadlines),
    map((action) => 
      this.service.set(`ldb:${action.payload.id}:0`))),
  { dispatch: false });

我尝试像 ofType(setTopics,setHeadlines) 一样在 ofType 中组合操作,但是如何在 this.service.set()

中传递不同的 ID

非常感谢您的帮助!

这可以通过两种方式实现

  1. 如果您想让效果保持通用以仅设置它接收到的内容,set headlines 操作可以将负载中的 ldb:<id>:0 设置为标签,而 setTopics 负载会将标签设置为与 id 相同(或者如果您不这样做在 setTopics 中不需要标签,您可以检查标签是否有效,然后使用标签 else id )
  2. 如果你不关心它是否通用,你可以这样做
 if (action.type === actionsType.ACTION1) {
    value = action.payload.id
  } else if (action.type === actionsType.ACTION2) {
    value = `ldb:${action.payload.id}:0`
  }
 this.service.set(`ldb:${action.payload.id}:0`)