2017-09-06 12 views
1

私はReactとReduxを使用しています。私はアイテムのストアを持っています{name: 'Jim', votes: '5', type: 'candidate'}ソートアイテムからの反応と再選択の防止

私はアイテムのフィルタリングされたリストを取得するために再選択を使用しています。私はまた、このリストの項目を投票でソートするために再選択を使用しています。

アイテムが投票されると、自動的にリスト内の位置が変更されます(アイテムが変更された場合、そのアイテムは再選択され、リストの順序が変更されます)。

この現象を防止したいと思います。それは状態の中で再注文せずに可能ですか?

+0

いくつかのコードを表示する必要があります! – Panther

答えて

0

別のアプローチは、データ正規またはアイテム初期間区分情報生成から成るかもしれません。情報を別の配列に保存するか、各アイテムオブジェクトにsortingプロパティをプッシュするだけです。

このようにしてスコアを更新しても、アイテムの並べ替えが妨げられることはありません。

+0

あなたはすべてのリゾートでAPIを取得しますか?または、通常の状態(順序付けられていない)と、順序付けセレクタが変更されたときに更新されるソートプロパティを取得する順序付け状態を作成します。私はこれがどのように機能するかを見ていると思う。 – antoinem

+0

私は第二の選択肢に傾いているだろう。一般に、データの正規化は、この種の操作を行う適切なタイミングです。 –

1

shouldSortのような新しいプロパティを導入してtrueに初期化できると思います。次に、あなたのupdateVote(newValue)アクション(またはこれまで呼んだこと)で、そのアクションのレデューサーにshouldSortfalseに設定させます。

これで、再選択機能でshouldSortを使用して、並べ替えるべきかどうかを判断できました。

ページの入退室時にもshouldSortの状態をリセットする必要があることに注意してください。そうしないと、ページを離れて再度入力するときにソートされたリストが表示されないことがあります。

+0

'shouldSort'がfalseの場合、ソートされていないリストを再選択しません(つまり、投票ではソートされません)。たぶん私はそのロジックを実装する必要があります+状態で以前の注文を格納する? – antoinem

+0

それはおそらく正しいです。それを考えなかったのです。以前の状態を保存すると解決しますしかし、それは非常にクリーンなソリューションのように感じることはありません。 – jonahe

+1

Redux状態でビューをどのように見えるように反映/決定するのですか?だからあなたはその絵を再選択する。デフォルトでは投票によって配列をソートします(最初に状態でデータを取得/設定する)。投票を変更すると、そのまま注文を放置します。ページを離れて再入力すると、「取得/設定」アクションが再度実行され、ソートされます(新しい投票を考慮して)。私には清潔感がある。しかし、セレクタが並べ替えを心配するのはなぜですか?なぜなら、コンポーネントがデータをどのようにしたいのかに固有の変換であるからです。 – jonahe

関連する問題