2016-04-26 8 views
1

ウィジェットを使用したダッシュボードがあり、現在のユーザーに依存しています。コンパイル時にすべてのウィジェットがロードされることはわかりません。つまり、州にはこれらのウィジェットの動的フィールドもあります。私はウィジェットごとに減速機を持っています。どのように私は必要なウィジェットのすべての還元剤を組み合わせるのですか?レデューサーの動的結合

私の状態は次のようになります。

{ dashboardId: 12, 
    widgetList:{ 

     w1: { 
      widgetTitle:'widget 1' 
      data:[] 
     }, 
     w2:{ 
      widgetTitle:'widget 2' 
      data:[] 

     } 
    } 
} 

今私はレデューサーを組み合わせたい:

combineReducers({ 
    w1:widget1Reducer, 
    w2:widget2Reducer 
}) 

さて、問題は、我々はすべてのウィジェットは、現在のダッシュボードのロードしようとしているかを知るいけないです。

答えて

1

ヘルパーを使用して複数のレデューサーを組み合わせる必要はありません。適切なウィジェットの減速を使用して指定されたウィジェットを更新するwidgetList減速作成:上記の例で

function widgetList(state = {}, action) { 
    switch (action.type) { 
    case WIDGET_A_FOO: 
    case WIDGET_A_BAR: 
     return { 
     ...state, 
     [action.id]: widgetA(state[action.id], action), 
     } 

    case WIDGET_B_BAZ: 
     return { 
     ...state, 
     [action.id]: widgetB(state[action.id], action), 
     } 

    case DELETE_WIDGET: 
     return _.omit(state, action.id) 

    default: 
     return state 
    } 
} 

を、action.idは、ウィジェットIDを保持しています。 widgetAwidgetBはウィジェットAおよびウィジェットBの減速

+0

おかげであり、それは私がこのことについて見唯一の欠点は、我々はすべてのウィジェット(〜と言う100)のために減速を輸入終わる可能性がある:) – user1803361

+0

きちんとしました。私はwebpackを使用しています、私は現在のページのために必要な減速機をダウンロードする方法はありますか? – user1803361

関連する問題