2017-02-20 4 views
0

Reduxでセレクタを使用していることを認識しています。しかし、私は、新たにフィルタリングされたデータを店舗に保存する方が意味があると感じるケースがあります。ここに私の例があります:Redux:派生データを店舗に保管することは常に悪い習慣ですか?

私はたくさんのアイテムを表示するアプリを持っています。これらの項目の特定のサブセットのみを表示する「グローバルフィルタ」オプションがあります。

事実、このフィルタはグローバルです。このアイテムのリストは、複数のページやコンポーネント(表のドロップダウンメニューなど)に変更されます。フィルタが設定されているときは、アプリケーション全体に関わらず、現在のサブセットのみが存在するアイテムのリストです。

どこでもセレクタを使用することができましたが、私のストアの 'filteredItems'部分を持つ方がより頑強に感じられます。これを行うことの不利な点は何でしょうか?

+0

reduxにセレクタと呼ばれる概念はありません。減速機を意味しますか?次に、「新しくフィルタリングされたデータを店舗に保存する方が意味がある」は、読みにくいことです。あなたの投稿を少しだけ明確かつ正確にすることができますか? –

+0

これは私が参照しているものです:http://redux.js.org/docs/recipes/ComputingDerivedData.html これらの概念について知っていれば、私の質問は理解しづらいとは思われません。 – AlexKempton

+0

私はどこでもセレクターを使用しません。これにより、後でコードを変更することが非常に難しくなります。私は絶対にフィルタリングされたデータをストアに格納します(これが私のやり方です)。これは、ストアに対してフィルタアクションを呼び出すことで実行できます。 –

答えて

2

。はい、一般的なアドバイスは、ストアの状態を最小限に保ち、セレクタを使用して拡張値を導出することですが、減縮器を使用して状態に保持されているフィルタリングされた値を作成するのに間違いはありません。あなたの状況は、それを行うための完全に妥当なユースケースのように思えます。

1

私は、パフォーマンスを向上させるために派生データやその他のものをキャッシュすることにより、さらに進歩したセレクタ(reselect)を使用しています。私はこれを常に使用しています。

なぜですか?

コンポーネントをできるだけ小さくして再利用できるようにするために、これをやり直した後、コンポーネントをより一般的な方法で記述し、セレクタをプラグ・アダプタの一種として使用して複数のコンポーネントに収まるデータの種類。

いつですか?

再選択を使用するときの主な問題の1つは、セットアップの部分です。退屈で...努力が必要ではありません。再選択パターンを学習して適用すると、大きなアプリを読み込んで維持するのがはるかに簡単になります

したがって、派生したデータを処理したり分散したりするには、多くのコンピューティングが必要な場合は、これを設定しますが、派生したデータが小さい場合は、これを気にする必要はありません。それはあなたがあなたのアプリケーションを持っている、とどこそれが生きるべきかの状態を判断するのはあなた次第です

私の2セント

+0

ええ、セレクターは素晴らしいですし、私はこのアプリの一部でそれらを使用しています。私の感想は、アプリケーション全体で使用されているデータのフィルタリングがグローバルに行われているため、セレクタの使用は適切ではないと感じています。私のジレンマを見ることができますか? – AlexKempton

+1

おそらくあなたのフィルタリングはサーバー側でなければなりません – redconservatory

+0

redconservatoryが正しくあります。これがグローバルであれば、あなたのデータをapiでフィルタリングして計算する必要があります。 – Sam

関連する問題