2016-10-20 5 views
0

私のストアにはgoalの配列が含まれています。私はそれをgoalをその小道具として持っているので、connect()とreduxストアに接続するGoalコンポーネントがあります。再選択 - 状態の一部のみをセレクタに渡すことは意味がありますか

目標コンポーネントには、派生データの作成に目標オブジェクト全体が必要な子があります。このデータがどのように抽出されるかを抽出するのに役立つ再選択を使用したいのですが、目標にアクセスしているときに、同じ目標をもう一度reduxストアから選択するのは意味がありません。

私は現在、Goalコンポーネントのゴールオブジェクトをその子に渡しています。そのようにしてセレクタを呼び出します。

これは、セレクタの引数が単なる1つの目標であり、すべての状態ではなく、状態の一部であることを意味します。これを使用する方法の例は、セレクタ関数がすべての状態をとるように "接続"する方法を使用します。

私のアプローチは意味がありますか?または、私がそのポイントを完全に逃したと私はもはや適切に状態ツリーの形をカプセル化した?

コメント/アドバイスは

答えて

2

セレクタの目的は、納品済みのデータを保持することです。 id値を渡す方が良いだろう、それは小道具を通じて目標コンポーネントの子どもたちにまでゴールオブジェクトを渡すことが可能ですが、

も:それは、状態ツリーのサブバラバラに渡す合法です(または何か)を小道具を通して子どもに教えてもらって、子供にconnect()connect()の引数を持つという引数を使って、対応する目標を得るようにしましょう。 hereで、小道に渡して使用することができます。ownProps全体の状態ツリーとディスパッチ - それは非常に便利です)。

これは、Goalコンポーネントが大きな太いオブジェクトを小道具に通す必要がないため、これが優れています。代わりに、子供のコンポーネントは、彼らが気にするゴールオブジェクトの特定の部分をmapStateToProps()で選択し、コンポーネントの小道具を浅くしておくことができます。

...少なくとも私の意見です。それと幸運!

+0

助けてくれてありがとうございます。 明確にするために、 'goalComponent'はpropsからIDを受け取り、セレクタを使用して接続して状態のゴール部分を取得します。 (私はすでにその部分を行っています) しかし、ゴールをそれぞれの 'goalChildComponent'に渡すのではなく、私はもう一度idを渡し、' goalChildComponent'は同じ関数を呼び出して同じ目標を状態から再度選択します。別の関数を使用して異なる派生データを作成するだけですか? 国の同じ部分を繰り返し渡すことができたときに、それを何度もつかんでしまうという考えが好きではありませんでした。しかし、私はあなたが正しいと思います。 – joejknowles

+0

あなたの提案は、ドキュメントが示唆しているものと一致します。再度、感謝します! – joejknowles

1

をいただければ幸いあなたは(親から子へ)小道具を経由してゴールを渡すように選択することができます - これは、親が「スマート」である意味に(状態について知っている)と子の場合"ダム"(ちょうどそれが小道具で与えられるものをレンダリングする)。

また、子コンポーネントで状態にアクセスすることもできます(好きなだけ)。

関連する問題