redux减速机的多个键

时间:2016-11-23 16:48:36

标签: javascript reactjs redux

我想使用对象来决定减速器的哪个部分运行。我目前的例子主要来自redux docs。例如:

export const todos = createReducer(initialState, {
    [ADD_TODO]: function (state, action) {
        return [ ...state, text: action.text ]
    }
})

function createReducer(initialState, handlers) {
    return function reducer(state = initialState, action) {
        if (handlers.hasOwnProperty(action.type)) {
            return handlers[action.type](state, action)
        } 

        return state;
    }
}

这适用于大多数用例,但我更喜欢为多个操作运行相同的功能。例如,在典型的减速器中,我会执行以下操作:

case: ADD_TODO:
case: ADD_TODOS:
    // Do stuff and return state
    return [ ...state, text: action.text ]

我希望能够做到这样的事情:

createReducer(initialState, {
    [ADD_TODO, ADD_TODOS]: function (state, action) { 
        // do stuff

有关干净方法的任何想法吗?

1 个答案:

答案 0 :(得分:0)

您只需要单独定义该功能,并将其重复用于多个键:

function addTodo(state, action) {
    // do stuff
}

export default createReducer(initialState, {
    [ADD_TODO] : addTodo,
    [ADD_TODOS] : addTodo,
});