2016-11-23 12 views
0

オブジェクトを使用して、レデューサーのどの部分が実行されているかを決定したい。私の現在の例は、主にreduxドキュメントからです。例:還元レデューサー用の複数のキー

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; 
    } 
} 

これはほとんどのユースケースでうまくいきますが、複数の操作で同じ機能を実行することをお勧めします。たとえば、私は次のことを行うと、典型的な減速に:

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

クリーンなアプローチのための任意のアイデアを:

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

私のような何かを行うことができるようにしたいですか?

答えて

0

あなただけの個別の機能を定義し、複数のキーのためにそれを再利用する必要があります。

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

export default createReducer(initialState, { 
    [ADD_TODO] : addTodo, 
    [ADD_TODOS] : addTodo, 
}); 
関連する問題