2017-07-13 9 views
0

私の店では、fruitIdごとに複数の州があり、それぞれfruitIdにはisDirty州があります。次に、とRESET_ALLの2つのアクションRESET_DIRTYがあります。次のコードは動作します。しかし、私はこのパターンをきれいにすることができるようにcombineReducersでこれを行う方法があるかどうか疑問に思っていたと思いますか?reduxストアでcombineReducersを使用してネストされたisDirty状態をリセットしますか?

私の店は今、この権利のように見えると私は思っていたか

function fruits(state = {}, action) { 
    return { 
    isDirty: isDirty(state.isDirty, action) 
    } 
} 

function isDirty(state = false, action) { 
    switch (action.type) { 
    case ActionTypes.RESET_DIRTY: 
     return false; 
    default: 
     return state; 
    } 
} 

export default function fruitStore(state = {}, action) { 
    if (!action.type.startsWith('fruits')) { 
    return state; 
    } 

    const { fruitId } = action; 
    const { currentFruit } = fruitId ? { 
    [fruitId] : fruits(state[fruitId], action) 
    } : {}; 

    let newState = Object.assign({}, state, currentFruit); 

    switch (action.type) { 
    case ActionTypes.RESET_DIRTY_ALL: 
     newState = Object.assign({}, newState); 

     Object.keys(newState).forEach((key) => { 
     newState[key].isDirty = false; 
     }); 

     return newState; 
    default: 
     return newState; 
    } 
} 

答えて

0

ありアヒルをReduxのをクリーンアップするが、使用のための本当に素晴らしいパターンの多くは、それらのすべてのこれまでの私のお気に入りであるあります。 Githubの上のこのレポはあなたにこの方法でファイルを構築する方法の荒廃を与える:

Github: Modular Redux Ducks

+0

興味深い..それをチェックアウト...しかし、私は今に実行している問題は、ちょうどにその可能RIFありますcombineReducerを使用して、isDirty状態resrtのようにネストされた更新を処理します。だから私は上記の単純なことができます – AirWick219

関連する問題