React Redux 앱을 개발하고 있으며 모범 사례에 대한 근본적인 질문이 있습니다. React Redux - 소품이나 연결을 통해 데이터를 구성 요소로 전달
나는 MainComponent componentDidMount에 (컨테이너의 종류) 내가 가져 오는거야 데이터를 한 :class MainComponent extends React.Component {
componentDidMount(){
this.fetchData()
}
fetchData() {
this.props.fetchDataAction()
}
render() {
return (
<div>
<ChildComponent1 />
<ChildComponent2 />
</div>
)
}
}
export default connect(mapStateToProps,{fetchDataAction})(MainComponent)
어떻게 ChildComponents에 가져온 데이터를 전달하는 방법? 가장 좋은 방법은 무엇입니까? 두 가지 가능한 솔루션 (이럴 - 어쩌면 더?)이다
최초의 솔루션 :
class MainComponent extends React.Component {
...
render() {
return (
<div>
<ChildComponent1 dataOne={this.props.data.one} />
<ChildComponent2 dataTwo={this.props.data.two} />
</div>
)
}
...
두 번째 솔루션 - MainComponent에 fetchDataAction()에 의해 갱신되는 저장 ChildComponents 연결 :
class ChildComponent1 extends React.Component {
render() {
return (
<div>
{this.props.one}
</div>
)
}
}
function mapStateToProps(state){
return (
one: state.one
)
}
export default connect(mapStateToProps,null)(ChildComponent1)
을 지금을 ChildComponents가 저장소와 두 번째 솔루션을 업데이트 할 때 작업을 수행하지 않을 때 첫 번째 솔루션을 사용합니다. 그러나 적절한 접근 방법인지 확실하지 않습니다.
[답변] (http://stackoverflow.com/questions/41043122/redux-provider-not-passing-down-props-state/41043535#41043535) –
고마워. React.cloneElement - 그것에 대해 몰랐습니다. 그러나 문제는 가능한 접근 방식이 모범 사례이거나 어쩌면 일부 조건에 달려 있다는 것입니다. – magnat
안녕하세요 @magnat 스마트 및 멍청한 구성 요소 구조를 따르는 주어진 예제에 가장 적합합니다. 참고 : MainComponent는 데이터 가져 오기를 담당하므로 컨테이너 (스마트)로 만들고 redux 저장소에 연결합니다. 하위 구성 요소 (벙어리)는 부모가 소품으로 전달한 개별 데이터/콜백을 가져 와서 렌더링합니다. 이렇게하면 컨테이너 및 구성 요소의 목적을 무효화하지 않고 구성 요소를 업데이트하고 구성 요소를 재사용 가능한 상태로 유지함으로써 추가 계산을 방지 할 수 있습니다. 내 의견을 남겨두면 어쩌면 미래에 누군가에게 도움이 될 것입니다. –