2016-10-01 8 views
2

私はReactjでデータをロードする場所に関する一般的な質問があります。Reactjs - data flow

主なコンポーネントはAppと呼ばれます。次に、アプリケーションはHeader、Body、Footerの3つのコンポーネントを返します。 Body内にTabコンポーネントがあります。Tabコンポーネントは、「グリッド」と呼ばれるコンポーネントを含むいくつかのコンポーネントにさらに細分されています。

今、私は自分のデータ(フィルタリング後)をグリッドに表示したいと思います。

<Body data={this.state.data} /> 
:とボディにそれを渡し
  • 私はそれが間違ってやっているなら、私を修正しますが私の考えですしてください。状態として主成分Appで

    1. データのロード本体部品で
    2. 、としてさらに渡し:

      <Tabs data={this.props.data} /> 
      
    3. タブ構成要素において
    4. 、としてさらに渡し:応じてそれを返す/データと表示をフィルタリングするすべてのメソッドを書き込み、グリッドにおいて

      <Grids data={this.props.data} /> 
      

    これは間違いありませんか?

    ありがとうございました

  • 答えて

    1

    あなたが概説したフローは正しいです。代わりの方法は、contextを使用することです:1つのコンポーネントのコンテキストに設定されたものは、そのコンポーネントのすべての子孫が、中間コンポーネントの小道具を設定することなく使用できます。

    Context comes with a warning though:それ はデータが少ないクリアな流れなるためのコンテキストを使用して

    を理解することはあなたのコードが難しくなります。これは、グローバル 変数を使用してアプリケーションに状態を渡すのと同じです。

    私は、FluxやReduxのようなものを使用したいと思います。 Reactコンポーネント内で直接データを管理することは、アプリケーションが成長するにつれて**の苦労になります。一方、Flux/Reduxは、非常にうまくスケールされます。

    +0

    あなたが反対する理由を説明するために、downvoteのためのケアをいただきありがとうございますか! – craftsman

    +0

    うん。私はReduxを見てきましたが、まだそれの周りに私の頭を持っていません。 – Wasteland

    +0

    このコースは私のために働いた:https://egghead.io/courses/getting-started-with-redux – craftsman