2017-09-06 5 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; 
    } 
}; 

을 중첩 될 것입니다 그리고 추가 할이 많은이 어떻게 더 나은 방법

I에있는 개체의 중첩 수 있습니까 추상적 것은 return newState 종류의 것을 생각하고있었습니다. 나는 결합 감속기가이 유형의 것인지를 정말로 이해하지 못한다. redux 문서는 내가 이해하기 어려우므로 감속기를 구성하는 방법에 대한 더 좋은 예가 필요합니다. thanks

답변

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

내 경우에는 실제로 작동하지 않지만 이것이 올바른 대답 인 것 같습니다. –