私はReact Reduxアプリケーションを開発していますが、私はいくつかのベストプラクティスについてかなり根本的な疑問があります。React Redux - データを小道具や接続経由でコンポーネントに渡します
私はcomponentDidMount上のデータをフェッチしていMainComponent(コンテナのようなもの)を持っている:
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に取得したデータを渡すためにどのように?ベストプラクティスは何ですか? 2つの解決策です(私見 - 多分もっと?)
まず解決策:
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がストアと第2のソリューションを更新するアクションを起動しないときは、最初のソリューションを使用します。しかし、それが適切なアプローチであるかどうかはわかりません。
私の[回答]を見てください(http://stackoverflow.com/questions/41043122/redux-provider-not-passing-down-props-state/41043535#41043535) –
ありがとうございました。 React.cloneElement - 私はそれについて知りませんでした。しかし、疑問は、可能なアプローチのどれがベストプラクティスか、あるいはそれはいくつかの条件に依存するかもしれないということです。 – magnat
hi @magnatあなたの与えられた例は、スマート&ダムコンポーネント構造に従うのに最も適しています。注:MainComponentはデータフェッチを担当しているため、コンテナ(スマート)にしてレフィックスストアに接続します。子コンポーネント(ダム)は、親によって小道具として渡された個々のデータ/コールバックを取得してレンダリングします。このようにして、コンテナやコンポーネントの目的を破ったり、コンポーネントを更新したり、コンポーネントを再利用できるようにしたりして余計な計算を防ぎます。私のコメントをここに残しておけば、将来誰かを助けるかもしれない。 –