2017-10-22 1 views
0

대 상태 관리 솔루션 반응?난 여전히 소품을 사용해야합니까, 소품

부모가 소품으로 아이 상태를 전송하는 경우 예를 들어, 부모와 자식 모두는 단순히 돌아 오는/MobX 저장소를 가져올 수 없습니다 가져온 스토어를 통해 상태에 대한 작업을 호출? 당신이 당신의 응용 프로그램 상태를 저장하기 위해 돌아 오는 또는 MobX를 사용하는 경우

+0

Redux는 최소한 "connect"메소드를 통해 올바르게 사용하여 구성 요소에 소품으로 저장 상태를 적용 할 경우에만 소품에서만 작동합니다. Redux를 사용하면 부모와 자식 모두에서 상태를 소품으로 매핑 할 수 있지만 실제로이 동작을 원하십니까? 이론적으로 부모가 자녀의 상태를 자녀에게 전달하도록 할 수 있습니다. 자녀의 구성 요소가 실제로 얼마나 강력한 지에 따라 다릅니다. 나는 비슷한 이야기가 될 것이라고 MobX는 추측하지만, 그것에 대해서는 거의 알지 못한다. – Icepickle

답변

1

, 당신은 구성 요소 (스마트) 연결됩니다있는 및 (벙어리) 분리 될 결정을 내릴 필요가있다.

협약은, 가게에 연결하는 저장소에 상태를 업데이트하고 상태 변화에 가입 할 책임이 있습니다 스마트 컨테이너를 만드는 것입니다. 이 구성 요소는 Redux/MobX 저장소를 인식하는 유일한 구성 요소입니다.

용기는 일반적으로 비 저장 및 응용 프로그램의 표현 적 측면을 주로 담당하는 바보 같은 아이들의 숫자가 있습니다. 그들은 Redux/Mobx 스토어의 존재를 알지 못하며 부모로부터 소품으로 상태 변경이나 행동을받습니다.

컨테이너와 프리젠 테이션 구성 요소의 차이점은 this article에서 Redux를 만든 @DanAbramov가 더 잘 이해할 수 있습니다.

2

당신은 항상 부모 - 자식 소품이 전달보다는 때문에 여러 가지 이유 돌아 오는 저장소에 모든 구성 요소를 매핑 반응 선호한다 :

  1. 반응

    이 통과 부모 - 자식 소품에 대한 최적화를 렌더링 제공하며, 돌아 오는하지 않습니다 . 즉, Redux 저장소의 모든 변경 사항을 의미합니다. 매핑 구성 요소는 성능 문제를 야기하여 다시 렌더링해야합니다. React에서는 세부 사항이 변경된 구성 요소 만 렌더링해야합니다.

  2. 당신은 그들이 밀접하게 서로 결합하고 있기 때문에 돌아 오는 저장소와 매핑 구성 요소를 다시 사용할 수 없습니다. 그러므로, 당신은 React에서 구성 가능한 패턴을 완전히 달성 할 수 없습니다. 따라서 React 방식으로 구성 요소에 소품을 전달하고 Redux 매핑을 몇 가지 핵심 구성 요소에서만 사용하십시오.

+0

나는 당신이 만든 어떤 점에도 동의하지 않는다. 이 주장을 근거로하고있는 참고 자료가 있습니까? AFAIK # 1. 'react-redux'는 렌더링을위한 많은 최적화를 제공합니다. 자세한 내용은 https://github.com/markerikson/react-redux-links/blob/master/react-performance.md#redux-performance를 참조하십시오. 또한 정상적인 부모 - 자식 소품에서는'shouldComponentUpdate'와'componentWillReceiveProps'를 사용하여 소품의 변화를 기반으로 렌더링을 최적화 할 수 있습니다. 연결 요소를 줄일 때도 마찬가지입니다. – palsrealm

+0

또한 Redux 저장소의 모든 변경 사항에 대해 변경된 상태에 가입 한 AFAIK 전용 구성 요소는 모든 구성 요소가 아닌 다시 렌더링됩니다. # 2 Redux 저장소에 연결된 구성 요소는 스마트 구성 요소이며 해당 소품의 부모 구성 요소에 의존하지 않습니다. 따라서 응용 프로그램에서 부모와의 연결없이 응용 프로그램을 재사용하고 렌더링 할 수 있습니다. 부모로부터 소품에 의존하는 구성 요소에는 소품으로 전달할 필수 데이터가있는 부모가 항상 있어야합니다. 이는 커플 링을 유도한다. – palsrealm

+0

@palsrealm # 2 당신은 느슨한 커플 링에 대한 생각이 잘못되었습니다.소품 통과 구성 요소에서 소품이 인터페이스 (PropType)를 준수하는 한 소품의 출처는 신경 쓰지 않습니다. 이제 Redux 저장소로 구성 요소를 매핑하면'mapStateToProps' 함수를 통해 저장소와 밀접하게 결합됩니다. Redux 저장소에서 아무 것도 변경하면 매핑 구성 요소가 손상 될 수 있습니다. 또한 동일한 구성 요소를 다른 상점과 재사용하려는 경우'mapStateToProps' 구현을 변경해야합니다. –

관련 문제