2016-10-02 5 views
0

私の設定はReactJS + Reduxです。reduxコンポーネントをリモートコントロールする方法

私は名前のギャラリーのコンポーネントを持っている:

  • Gallery.js:ReactJSコンポーネント
  • GalleryContainer:Reduxのコンテナ私は遠く(外部からのコントローラで選択したタブを制御したい

コンポーネント階層内で離れている)。私は、私のappState減速にsetGallerySelectedTabという名前のアクションの作成者を変数を追加し、私はcomponentWillReviewPropsに新たに到着した小道具に耳を傾け、状態のselectedTabにそれらを比較します。私が制御したい感じが新しい減速プロパティ、アクションの作成者とwillReceiveProps比較ですを作成するために私を必要としコンポーネントの外観の各側面&:

  1. ハードワーク:私は、このアプローチに関する二つの開放問題があります。
  2. クラッタリング:多くのsetStateが各アスペクト用です。それはそれがコンポーネントをより具体的に感じます。コンポーネントのコードを読んでいる人は、そのコンポーネントが何をしているのかを知りたいと思っています。そして今、彼は外部コントロールを扱う多くのコードを見ています。

コードをエレガントに保ちながらreduxコンポーネントを制御する方法を知っている人はいますか?

答えて

1

buyのような継ぎ目は、すべてのコンポーネントで使用できるアクション作成者である必要があります。そのコンポーネントが他のコンポーネントに依存しているため、コンポーネントと一緒に配置した場合は、共有している状態をReduxストアに入れてデカルトする必要があります。


OPの後のEDITSは、質問をより適切に表現するために投稿を変更しました。

具体的なコードサンプルは提供していませんが、setStateを大量に実行する必要があります。どうして?

コンポーネントのレンダリング方法は、コンポーネントの小道具と内部状態にのみ依存している必要があります。小道具の変更が州の変更を必要とする場合は、あなたのレンダー方法内の小道具からこれらの州の方法を計算し、それらを状態に保存しないでください。

+0

あなたは正しいです。他のactionCreatorsを使用していますが、新しいアクションクリエーターとしてパッケージ化することができます。 – Guy

+0

私はまだ、小道具の変更を聞くことなくコンポーネントを制御する方法があることを望みます。例えば、コンポーネントの選択されたTabを遠くのシステムの部分から変更したい場合は、ルックアンドフィールを制御するために小道具の変更を聞いて、これを行うにはエレガントな方法であるのだろうか... – Guy

+0

申し訳ありません。私はあなたの答えが文脈から外れていることを理解することだけを明確にするために質問を変更しました。謝罪します。 – Guy

関連する問題