2016-09-12 4 views
0

私は反応アプリを作成しています。私のコンポーネントには、自分で状態を処理するすべてのサブコンポーネントをレンダリングするルートコンポーネントがあります。React store management

私はいくつかの兄弟コンポーネントが他のコンポーネントからデータを取得する必要がある場合があります。私の最初の本能はネゴシエートにルートコンポーネントを使用することですが、ルートコンポーネントは巨大なモノリスコンポーネントです。

これを改善する方法はありますか?フラックス・アーキテクチャーを使用する必要がありますか?

+2

ルートコンポーネントコミュニケータは、フラックスなしで最善のアプローチです。それが肥大化していると思うなら、ReduxやMobXを追加するか、あなたが一番気に入っている状態管理のものを追加してください。 – azium

+0

@azium '最善のアプローチ'は大胆な発言です:)彼は、ルートコンポーネントの知識なしに、子コンポーネントがデータを公開/購読する単純な 'Store'を実装することもできます。再レンダリングはアプリケーションツリー全体の代わりに特定の子に対して行うことができるので、さらに効率的です。 – mklimek

+0

@mklimek私は丁寧にここであなたに同意しない。 @ aziumが正しい場合は、この場合は一元管理された単一のストアが最適な方法です。 –

答えて

0

Reduxなどのバリアントを実装するFluxアーキテクチャーとライブラリを使用する必要はありませんが、このタイプの通信をはるかに簡単にします。あなたの場合、兄弟と話すルートコンポーネントは親(ルート)コンポーネントになります。

親子へ:小道具およびREF機能親に

子供:コールバック関数とイベントバブル兄弟へ

兄弟ここ

は、コンポーネントの通信のためのいくつかの戦略です。親コンポーネント

どれにどれ:ここ Observerパターン、グローバル変数、コンテキスト

は異なる戦略を説明する良い記事です:React Component Communication