用于确定状态是否存在的 Redux 工具包匹配器

Redux Toolkit matcher to determine if exists in state

我有一个大型减速器,我将所有数据实体存储在一个平面结构中。

我想将它分成 2 个单独的 reducer,以便一些实体使用 Redux Persist 持久化,而另一些则不是。

为了实现这一点,我正在尝试添加一个匹配器来检测状态是否已经有实体,如果没有则拒绝。

  //these cases are used by both reducers
     builder
    .addCase(update, (state, action) => {})
    .addCase(copy, (state, action) => {})
    .addCase(clone, (state, action) => {})
    .addMatcher(isEntityAction, matcher);

function isEntityAction(action: AnyAction): action is PayloadAction {
  return !!action.payload?.entity;
}

function matcher(state, action: AnyAction): action is PayloadAction<any> {
  return state[action.payload?.entity?.entityType] !== undefined;
}

但是匹配器没有效果。

解决这个问题的正确方法是什么?谢谢

您在这里误解了 addMatcher

签名是addMatcher(matcher, reducer) - 匹配器只能说“我想处理这个动作”或“我不想处理它” - 它无法查看状态。它也不能“拒绝”某些东西。