2016-07-21 1 views
0

를 공유 내가 피디아 같은 검색 창 탭이 있습니다 는 돌아 오는 반응 - 말하는 감속기 (감속기 계층 구조) 사이의 상태

enter image description here

내가 필드의 일부 (같은 날짜를 반환 및 을 출발을 원하는을)를 모든 탭에 공통으로 적용합니다.

그래서 내 상태가 검색 버튼을 클릭하면, 모든 감속기 선택한 날짜 알고 있어야하기 때문에 commonReducer 데이터와 함께, 다른 모든 탭 감속기 사이에 공유되는

{ 
    commonReducer: { 
    startDate: 
    endDate: 
    }, 
    hotelsReducer: { 
    rooms: [], 
    location: [] 
    }, 
    flightsReducer: { 
    from: 
    to: 
    } 
    etc... 
} 

처럼 보일 것이다 그들의 구체적인 데이터.

감속기간에 데이터를 공유 할 수있는 방법이 있습니까? searchTabsReducer가 (자신이 검색 탭 상태의 전체 그림을 가지고있는 유일한 사람이기 때문에) 모든을 제출을 처리 할 것이다 그래야

{ 
    searchTabsReducer: { 
    commonReducer: { 
     startDate: 
     endDate: 
    }, 
    hotelsReducer: { 
     rooms: [], 
     location: [] 
    }, 
    flightsReducer: { 
     from: 
     to: 
    } 
    etc... 
    } 
} 

: 나 같은 계층 구조의 어떤 종류가?

내가 이해 한대로 combine reducers 함수는 계층 구조를 지원하지 않습니다.

나는 모든 탭 상태를 포함하는 너무 큰 파일 하나를 가지게되었지만, 그것이 옳다고 생각하지는 않습니다.

감사합니다.

+3

이전에 같은 문제가 발생했지만 컨테이너의 모든 상태 데이터를 가져올 수 있다는 것을 깨달았습니다. 그래서 감속기를 계층 구조의 "깨끗한"상태로 유지하고 데이터 컨테이너 수준을 결합했습니다. –

+0

conatiner가 데이터를 감속기에 전달했다는 뜻입니까? – Daniel

+0

아니요. 나는 감속기를 그대로 유지하고 컨테이너의 데이터를 혼합하여 구성 요소에 공급했습니다. 이것은 당신의 문제를 해결하지 못한다. –

답변

2

, 그냥 당신이 당신의 데이터를 표시 할 컨테이너에 필요한 감속기에서 상태를 연결합니다.

을 거기에서 데이터가 예를 들어, 작업을 파견하는 것을 사용하여 검색 작업.

1

감속기 사이의 데이터 공유는 독립적 인 감속기 만 만들면됩니다. 감속기는 항상 다른 감속기에서 사용할 수 있습니다.

redux를 사용하면 응용 프로그램 상태의 모든 데이터를 모두 reducers에서 사용할 수 있습니다. 그렇지 않으면

(dispatch, getState) => { 
    ... 
}; 

특정 감속기가 트리거에 대한 작업이 어디에 당신은 어떤 REDUX 작업을 가져올 수 있습니다 : 작업을 trigerring 때

게다가, redux-thunk 당신에게 응용 프로그램 상태에서 모든 데이터에 액세스 할 수있는 방법을 제공 할 수 있습니다 다른 감속기에서 동작.

이렇게하면 "구성"접근 방식이 모든 사용 사례를 해결합니다. 감속기를 결합 할 필요가 없습니다