2016-11-23 34 views
0

我想用对象来决定我的reducer的哪个部分运行。我目前的例子主要来自redux文档。例如:Redux Reducer的多个键

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 

任何想法?

回答

0

你只需要单独定义的功能,并再次使用了多个密钥:

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

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