Reducer和Epic中的无限循环

问题描述

我使用过useDispatch + createAsyncAction + Epic,但我遇到了无限循环,但并没有真正弄清原因。我也使用Ionic(不要认为这有所作为)

调用组件:


<IonButton
        onClick={() => {
          dispatch(actions.addMemory.request(dummyMemory));
        }}
      > Dispatch Test</IonButton>

创建的操作:

  "ADD_MEMORY_REQUEST","ADD_MEMORY_SUCCESS","ADD_MEMORY_FAILURE"
)<Memory,Memory,Error>();

史诗:

  action$
) =>
  action$.pipe(
    filter(isActionOf(memoryActions.addMemory.request)),mergeMap((action) => {    
      return of(memoryActions.addMemory.success(action.payload));
    })
  );

减速器:

      console.log("i got to reducer",action.payload);
      return {
        ...state,memories: [...state.memories,action.payload],};

我检查了一下,然后在减速器上获得了正确的有效载荷,但是它进入了他和史诗之间的无限循环。

有什么想法吗?

解决方法

所有的问题都是在指定RootState的类型之后...我在types.d.ts上有这个

import { StateType,ActionType } from "typesafe-actions";

declare module "typesafe-actions" {
  export type Store = StateType<typeof import("./index").default>;

  export type RootState = StateType<typeof import("./root-reducer").default>;

  export type RootAction = ActionType<typeof import("./root-action").default>;

  interface Types {
    RootAction: RootAction;
  }
}

又失踪了

RootState: RootState;

在类型界面中...

现在一切正常!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...