我正在研究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>
)
}
...
二的解决方案 - 连接ChildComponents到存储由fetchDataAction()在MainComponent更新:
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存储库连接起来。子组件(愚蠢)只是采取单独的数据/回调作为道具父母和渲染它们。通过这种方式,您不会失败容器和组件的用途,通过反应更新组件并保持组件可重用,防止额外的计算。留下我的评论在这里,也许这对未来有帮助。 –