2017-05-03 7 views
3

私の単一のレデューサーを異なるレデューサーに分割しようとするcombineReducersは、この目的のためにreduxが提供する便利な関数です。 combineReducersしかし、少なくとも各第1レベルの状態キーについて、減速器を用いて状態を特定の状態に制限する。したがって、場合によっては、必要以上の減速機を追加するか、州の形状を変更する必要があります。より具体的にはRedux:combineReducers shape independent

は、アプリケーションのストアが同様であることを前提としています。上記の店舗については

let store = { 
    a: true, 
    b: false, 
    c: {...} 
    d: {...}  
} 

を私は上記のキーごとに、減速を定義し、それらを組み合わせたので、これは何かになりますする必要があります以下のような:

const reducerA = (state, action) => {...} 
const reducerB = (state, action) => {...} 
const reducerC = (state, action) => {...} 
const reducerD = (state, action) => {...} 

const rootReducer = combineReducers({ 
    a: reducerA, 
    b: reducerB, 
    c: reducerC, 
    d: reducerD 
}); 

私は状態に各オブジェクトを処理するためのreducerC & reducerDを維持したいのですが、私はa &のための一般的な減速を持っている必要があります状態のキー。

は、どのように私はこれらの余分な減速reducerA & reducerBを定義したり、共通の減速reducerABで親オブジェクトを追加することなく、ルートレベルの状態キーの値を追加することができますか?これはcombineReducersを使用して可能ですか、必要な動作に違った方法でアプローチする必要がありますか?

答えて

2

いいえ、combineReducersのユースケースは、各状態スライスを維持するためのロジックを具体的に分割し、その作業を機能別に委譲することです。実際にabの両方を同一のファンクションインスタンスで管理する場合は、スライス(state.ab.aなど)にまとめたり、なんらかの方法でcombineReducers以外のものを使用する必要があります。

還元剤ロジックを構成する追加の方法については、Redux FAQ question on sharing state between reducersと同様に、ReduxドキュメントのStructuring Reducers - Beyond combineReducersのセクションを参照してください。

関連する問題