用于确定状态是否存在的 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)
- 匹配器只能说“我想处理这个动作”或“我不想处理它” - 它无法查看状态。它也不能“拒绝”某些东西。
我有一个大型减速器,我将所有数据实体存储在一个平面结构中。
我想将它分成 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)
- 匹配器只能说“我想处理这个动作”或“我不想处理它” - 它无法查看状态。它也不能“拒绝”某些东西。