2016-12-07 23 views
1

Iv'eはトップレベル(スマートコンポーネント)のみを接続することをお勧めします。そして、彼らはそれらのより低いレベル(ダムコンポーネント)にプロンプ​​トを伝えることができます。React + Redux - すべてのコンポーネントを接続してみませんか?

@connect(ing)するときにダムコンポーネントを作成することは可能ですが、表示するプリミティブオブジェクト\引数のみを渡すだけです。

すべてのコンポーネントを@connect経由で店舗に配線することをお勧めしますか? パフォーマンスに影響はありますか?

どのような考えですか?ダンアブラモフ、Reduxのの作者から

答えて

4

つぶやき:Reduxの例では「トップ1つのコンテナコンポーネントを」強調

は 間違いでした。これを極秘にしないでください。

はまた、あなたが厳密ONLYトップレベルのコンポーネントを接続してはならないhttps://twitter.com/dan_abramov/status/668585589609005056

+1

Redux FAQの詳細については、http://redux.js.org/docs/faq/ReactRedux.html#react-multiple- componentsを参照してください。 – markerikson

1

で彼の回答をお読みください。これをやり始めると、と大きく成長し、実際にはレンダリングや使用していないデータを渡していることがわかります。

この問題の解決策は、その未使用データに依存する下位レベルのコンポーネントを接続することです。コンポーネントツリー内を移動するほど、より一般的な(ダム)および再利用可能なコンポーネントになります。

2

ダン・アブラモフ監督は、数年前に媒体上の記事でそれに対処: https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0#.vtq34z4ir

彼は「コンテナ」コンポーネント対「プレゼンテーション」、それらを呼び出します。私は奇妙で紛らわしい名前を見つけたので、それを(さらに)理解するのが難しくなります。しかし、目的は、アプリケーション固有のもの(Reduxストアの仕様への接続を含む)をコンテナコンポーネントに集中させることです。

プレゼンテーションコンポーネントは、特定のアプリケーションからより分離されています。軽量であり、Reduxをまったく呼び出すことなく立ち上がることができるため、単独でテストする方が簡単です。彼らはあなたのアプリケーションの特定のデータフォーマット(またはReduxにまったく接続されていないため)が再利用される可能性が高くなります。

個人的には、この区別が維持する価値があると私は確信していません。本当に軽量で再利用可能なコンポーネントは、通常、他の誰かからインポートされます。実際にあなたが書いたものは、あなたのデータストアの特質に結びつくことになります...それが最初の場所に書いている点ですから。これまで書かれていない真に再利用可能なコンポーネントを書くことは比較的まれです。あなたがそれを作ったら、事実の後にそれを広めるのは比較的簡単です。 (私はあなたのフレームワークを過度に考えていないことに大きな意欲を持っています。なぜなら、それらを間違えてリファクタリングする必要があるからです。)

Reactを発明した人が直接サポートしているパラダイムです。そこにコードを書くことに成功しました。だから、もし私があなただったら、私は彼の意見を持って行くだろう。

関連する問題