【问题标题】:NGRX Effect infinite loopNGRX 效果无限循环
【发布时间】:2020-09-11 07:18:11
【问题描述】:

我正在努力实现 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,
    })
  )
);

欢迎任何帮助,谢谢。

【问题讨论】:

  • 你能创建一个 StackBlitz 或类似的东西吗?

标签: angular rxjs ngrx


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2019-11-28
    • 2023-03-28
    • 2018-01-11
    • 2013-01-20
    相关资源
    最近更新 更多