2017-09-06 1 views
0
自分のアプリケーションのセクションのための

私の減速が入れ子になったReduxレデューサーをどのように編成するのですか?

export const MainReducers = function(state = mapDataToInitialState(), 
action = {}) { 
    switch (action.type) { 
       case Constants.SET_FOO: 
     return update(state, { 

      sheet: { 
      stream: { 
       appeal_0: { 
       issues: { 
        problem1: { 
        foo: { 
         $set: action.payload.foo 
        } 
        } 
       } 
       } 
      } 
      } 
     }); 

     case Constants.SET_BAR: 
     return update(state, { 
      // TODO make reusable for all issues fields 
     sheet: { 
      stream: { 
       person: { 
       issues: { 
        problem1: { 
        bar: { 
         $set: action.payload.bar 
        } 
        } 
       } 
       } 
      } 
      } 
     }); 
    default: return state; 
    } 
}; 

深くネストされたことになるだろうと私は追加するには、これらの多くを持って、どのように私は抽象オブジェクトのネストより良い方法

で私は何かreturn newStateのようなものを考えていました。私は本当に結合型減速機がこのタイプのものであるかどうかはわかりません。 reduxのドキュメントは私が理解するのが難しいので、私は減速器を構成する方法の良い例が必要です。

答えて

0

combineReducersは確かに行く方法です。また、作業を簡単にするために状態を正規化したり平坦化したりすることもできます。

function mapStateToProps(state, ownProps) { 
    return { 
     person: state.people[ ownProps.personId ] 
     issues: state.issues[ ownProps.personId ] 
    }; 
} 
+0

が解決しない:

だから、その後、あなたのコンポーネントではなく、巨大な巨大なオブジェクトを取得するよりも、彼らはmapStateToPropsにしたい個々のビットをつかむことができ

const appReducer = combineReducers({ streams: streamReducer, people: peopleReducer, issues: issueReducer }); 

をしたいかもしれません入れ子の問題。データは既にフラット化されています。私はデータを更新することに多くの選択肢がありません。しかし、私は深いネスティングを繰り返さないようにしたい –

+0

ああ私が見る - 私は問題の減速機が必要 –

+0

それは本当に私のケースで動作しませんでしたが、これは正解と思われる –

関連する問題