我有多个减速器,每个减速器都有一个类型“INIT'”。我想要实现的只是相关的减速器可以接收动作,从触发动作的位置来判断。是否有任何中间件可以做到这一点?
答案 0 :(得分:1)
您是否在创建Reducer时重新使用reducer逻辑?
你可以尝试这样的事情: -
function createCounterWithNamedType(counterName = '') {
return function counter(state = 0, action) {
switch (action.type) {
case `INCREMENT_${counterName}`:
return state + 1;
case `DECREMENT_${counterName}`:
return state - 1;
default:
return state;
}
}
}
const rootReducer = combineReducers({
counterA : createCounterWithNamedType('A'),
counterB : createCounterWithNamedType('B'),
counterC : createCounterWithNamedType('C'),
});
store.dispatch({type : 'INCREMENT_B'});
console.log(store.getState());
这就是所谓的高阶减少器,你可以通过创建一个包装器函数来使用相同的减速器逻辑,如上面的代码所示。
您可以查看有关高阶减速机here
的更多信息答案 1 :(得分:0)
我不这么认为你可以这样做。
通常我会为每个减速器提供唯一的类型,如果我需要对多个减速器使用相同的动作, 我将使用combine Reducer功能来实现相同的功能。