2016-08-25 4 views
4

나는 normalizr을 사용 중이며 내 state.entities.users 브랜치를 가지고 있습니다.엔티티의 Redux UI 상태

내 SPA에는 사용자를보고 따르거나/언 폴링 할 수있는 페이지가 있습니다. 사용자를 가져 오는 중이거나 follow API 호출의 결과를 기다리는 경우 회 전자를 보여줍니다.

UI 관련 상태를 어디에 두는 것이 가장 좋습니다.

단지 entities 객체에이를 저장하는 간단한 것 : 여기이 데이터를 저장하는 주요 단점

{ 
    entities: { 
    [1]: { 
     name: "Bob", 
     followed_by_user: true 
    }, 
    [2]: { 
     isFetching: true 
    } 
    [3]: { 
     name: "Jane", 
     isUpdatingFollowing: true 
    } 
    } 
} 

이 있습니까? 그렇지 않으면 병렬 감속기 모양을 구현해야합니다. state.ui.pages.users은 반응이 많은 부분에서 겹치는 부분이 많습니다 (예 : 두 감속기가 모두 으로 업데이트해야 함 : state.ui.pages.users[1].isUpdatingFollowing = false을 업데이트하고 state.entities[1].followed_by_user = true을 업데이트해야 함). 반면 위의 형식으로이 모든 작업을 처리 할 수 ​​있습니다. 한 번에).

+3

아마도 개별적으로 반응하는 여러 감속기가 우려의 관점에서 분리 된 Redux를 사용하는 것의 아름다움 인 것처럼 보입니다. 그렇지 않으면 감속기가 계속 커질 것입니다. – goldbullet

답변

1

redux를 사용하는 경우 우려 사항을 해결하기 위해 최선을 다해야합니다. 귀하의 도메인에서 usersui 주에 관한 정보와 독립적 인 개념이므로 다른 감속기에 넣을 수도 있습니다.

감속기를 자유롭게 구성 할 수 있지만 공유 된 동작에 응답하는 여러 개의 감속기를 사용하는 것이 좋습니다. 특정 감속기에 동작이 항상 밀접하게 연결되는 것은 아니지만 때로는 (종종)있을지라도.

이 질문은 redux의 제작자가 비슷한 질문 인 https://github.com/reactjs/redux/issues/601#issuecomment-133519377에 대한 좋은 답변이었습니다.