2017-09-11 18 views
0

子コンテナ内のプレゼンテーションコンポーネントが初期状態になるように、親コンテナコンポーネントから子コンテナコンポーネントに渡す必要がある状況に遭遇しています。これに近づく別の方法がありますか?これはぶつかるのですか?Redux - 子コンテナコンポーネントに小道具を渡しても問題ありませんか?

+0

具体的にお聞かせください。子コンポーネントはなぜ小道具から「初期状態」を必要としますか?これらの小道具が親の文脈か還元のどちらから来るのかは、それがなぜ違いますか? – gravityplanx

+0

私はいくつかのデータを、レールサーバーから親コンテナコンポーネントに渡しています。このデータを子コンテナコンポーネントに渡し、次にダムビューに渡す必要があります。私はちょうど送られた小道具とアクションをディスパッチし、最初の還元状態を更新するのですか?しかし、それでも私は子供のコンテナにそれを渡す必要があります。 – linuxNoob

+0

最後の声明を取り戻します。それを還元状態の一部として更新すれば、それを伝える必要はありません。 – linuxNoob

答えて

3

はReduxのが消費している親コンテナ(あなたは「レールから」と言うデータ)のデータですか?そうでない場合、それはあなたの本当の問題です。 Reduxは、反応容器のための唯一の情報源でなければなりません。 Reduxはまた、Railsアプリケーションから情報を受け取り、その情報をグローバルな状態で格納する必要があります。

あなたがこれを達成したら、あなたは今、リアクトコンテナに供給するすべての情報についての真実の単一のソースを持っています。

サブコンポーネントはまったく情報が必要な場合は、親コンテナのReduxの状態情報からそれらを受けるべきです。

ネストされたサブコンポーネントを持つことは問題ありません。 1つのレイヤーから次のレイヤーへ情報を引き続き流してください。例えば。 reduxからnameを受け取ったContainerAは、ComponentXをname={this.props.name}でレンダリングすることができ、ComponentXは再びname={this.props.name}でComponentYをレンダリングできます。これにより、ComponentYはReduxからの情報を親コンポーネントとコンテナに渡します。

あなたのアプリはもちろん、コンテナよりもはるかに多くのコンポーネントを持っている必要があります。それはいいことだ。これらはデータのみ形状ではなく、データソースに結びついているので、コンポーネントは、本質的に再利用可能です。特定の情報を一連のコンポーネントに挿入する必要がある場合に限り、コンテナを控えめに使用します。

+0

ありがとう、それは役立ちます。あなたが 'ContainerA、reduxから名前を受け取る'と言うとき、あなたは 'getState()'でそれを受け取ることを意味しますか?私は何か不足しているかもしれませんが、 'mapStateFromProps'はアクションがディスパッチされたときにだけトリガされるという印象を受けています。 – linuxNoob

+1

'getState'から手動ではなく' mapStateFromProps'を使うべきです。これはディスパッチをトリガーするだけで、ディスラッチを使ってレール情報を消費して、Reduxに格納する必要があることを意味します。どのようにレールからデータを取得するかによって、データの流れを決めることができますが、すべてのデータを同じデータフローでルーティングする必要があります。 – gravityplanx

関連する問題