2017-10-23 6 views
0

나는 Redux를 사용하여 반응성이 뛰어나며 redux와 반응하여 반응한다. 나는 두 개의 감속기를 결합하는 combinereducers()를 사용Redux의 combineReducer에() 가입하는 방법은 무엇입니까?

지금은 내 감속기에 약간의 변화에 ​​가입
const reducers = combineReducers({ 
    sessiontype, 
    userdata 
}) 

:

store.subscribe((state, previousState) => { 

     //Do something 

    }); 

가 어떻게 내 유저 데이터 감속기 만 가입? 왜냐하면 내 sessiontype 감속기의 상태를 변경할 때 내 감속기의 상태를 변경해야하며 (전체 감속기를 감지했기 때문에 내 store.subscribe()에서 무한 사이클을 생성합니다 ...) (미안하지만, 내 나쁜 영어)

답변

2

돌아 오는 주변의 개념은 당신이 가지고있다 하나의 statereducer 별도의 감속기이 아이디어는 combineReducers()에 의해 도입 된 단지 구현 세부입니다 -. 당신이 부분에 감속기를 생각 할 수 있지만, 당신의 응용 프로그램은 단순히 하나의 reducer있다. this GitHub thread에 토론을 확인하세요.

react-redux 패키지 내부의 mapStateToProps 기능은 s의 수 구성 요소가 액세스 할 수있는 reducer의 부분을 선출하십시오. 이렇게하면 문제를 해결하는 데 도움이 될 수 있습니다. sessiontype에 액세스 할 수있는 구성 요소가 reducer을 업데이트하면 동일한 구성 요소 업데이트 userdata을 사용할 수 있습니다. 이렇게하려면 dispatch 두 개의 별도 작업을 store에 입력하면됩니다. 또한 subscribe은 실제로 store에 액세스 할 수 없다는 점을 기억하십시오. 간단히 말해서 무엇인가가 변경되었음을 알려드립니다. subscribe 함수에서 실제로 데이터를 읽으려면 getState()을 호출해야합니다. 더 읽기 here. 이 같은

시도 뭔가 :

store.subscribe((state, prevState) => { 

    // run a check of conditions for an action being dispatched 
    // if you don't specify conditions, you'll end up in an 
    // infinite loop 
    if (stateHasFieldOrValue) { 

    // dispatch update to sessiontype 
    store.dispatch(updateSessionType(payload)); 

    // dispatch update to userdata 
    store.dispatch(updateUserData(payload)); 
    } 
});