如何将动作发送到特定的减速器?

时间:2018-01-23 06:35:05

标签: react-redux

我有多个减速器,每个减速器都有一个类型“INIT'”。我想要实现的只是相关的减速器可以接收动作,从触发动作的位置来判断。是否有任何中间件可以做到这一点?

2 个答案:

答案 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功能来实现相同的功能。