2016-11-23 77 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, 
});