NGRX效果无限循环

时间:2020-09-11 07:18:11

标签: angular rxjs ngrx

我正在努力实现Ngrx效果(直接来自文档)。 我总是以无限循环结尾:

  updateSomething$ = createEffect(() =>
    this.actions$.pipe(
      ofType(somActions.fetchUpdateSomething),
      mergeMap(() =>
        this.someService.fetchUpdateSomething().pipe(
          map(({ someData }) =>
            someOtherActions.theAction({
              payload: someData,
            })
          ),
          catchError(() => EMPTY)
        )
      )
    )
  );

我为此触发的动作来自一个组件:

this.store.dispatch(somActions.fetchUpdateSomething());

目标操作(somActions.fetchUpdateSomething)如下所示:

export const fetchUpdateSomething = createAction(
  SomeActionTypes.FETCH_UPDATE_SOMETHING
);

以及要由效果触发的所需动作:

export const theAction = createAction(
  SomeOtherActionTypes.UPDATE_SOMETHING,
  props<{ payload: someData }>()
);

我昨天为此奋斗了几个小时。动作`theAction陷入无限循环。 减速器:

export const myReducer = createReducer(
  initialState,
  on(
    someOtherActions.theAction,
    (state, { payload }) => ({
      ...state,
      ...payload,
    })
  )
);

任何帮助都将受到欢迎,谢谢。

1 个答案:

答案 0 :(得分:0)

实际上,我发现了一个问题:正是在服务中,在执行API调用之前检索存储中的值时,导致了无限循环。