私のアプリケーションでは、ユーザーには複数の..「犬」と言うことがあります。現在選択されている犬がヘッダーに表示され、ヘッダーのドロップダウンメニューから変更できます。新しい犬を選択すると、それはバックエンドにprimary: true
としてマークされ、対応するヘッダーUIを更新します。その時点から、バックエンドへのすべての要求はprimary
犬の結果を返します。React:componentDidMountを再実行する兄弟コンポーネントを再マウントするにはどうすればいいですか?
私はこのようになりますLayout.jsx
コンポーネントがあります:this.props.children
で
<Header />
<div>
{this.props.children}
</div>
を、私はネットワーク要求が行われたTreatsContainer
かもしれないが、複数の異なるリソースのためのインデックスページをレンダリングする子コンポーネントの例、すなわちcomponentDidMount
〜/treats
にあり、結果は私のレイアウト内に表示されます。
私が直面している問題は、ユーザーがヘッダーコンポーネントで犬を変更したときに、他のコンポーネントがcomponentDidMount
で作成しているのと同じネットワークリクエストを再実行して、新しく選択した犬データが表示されます。私はReduxをアプリケーション内のいくつかの場所に実装していますが、ユーザーが作成できるリソースの数に制限はないため、グローバル状態ツリーにすべてのデータを格納しないことをお勧めします。私がこれを意味するのは、配列の束に、/treats
、/toys
、/foods
などのすべてのデータが必要なわけではありません。この状況を処理するための良いアプローチは何でしょうか?
'Header 'の選択が変更されたときに' Layout'のpropsが変更されますか?もしそうでなければ、彼らはおそらくすべきです。次に、同じネットワーク呼び出しで 'componentWillReceiveProps'を実装することができます(おそらく*両方の*メソッドの外で定義されているので、繰り返す必要はありません)。アンマウント/再マウントをしようとすると、実際の問題に賛成するXYの問題になると思います。あなたはヘッダ選択のための単一のredux状態要素を持ち、 'Layout'をそれに接続することができます。 –