正規化されたReduxデータ構造が文字列IDでインデックスされています。他のプロパティの中でも、状態の各オブジェクトにはsequenceNumber
があり、リストまたはグリッドで順に表示するために使用されます。アイテムをドラッグ&ドロップすると、アイテムを並べ替えることができます。正規化されたReduxデータ構造内のオブジェクトの順序を並べ替える
私は、シーケンス番号を更新するためにきれいで純粋なアプローチを見つけるのに苦労しています。 Redux減速機でこれを行う良い方法は何ですか?
私の現在のstate
データ構造は、基本的に次のとおりです。
{
'asdf': { title: 'Item 1', sequence: 0, ... },
'1234': { title: 'Item 2', sequence: 1, ... },
'zzzz': { title: 'Item 3', sequence: 2, ... }
}
私の行動は状態に
{
'asdf': { title: 'Item 1', sequence: 1, ... },
'1234': { title: 'Item 2', sequence: 0, ... },
'zzzz': { title: 'Item 3', sequence: 2, ... }
}
私の現在の減速機の用途をもたらすべきである
{ type: REORDER_ITEMS, oldRow: 1, newRow: 0 }
ですObject.keys(state).reduce()
を使用して項目をループし、希望の行番号よりも大きいか小さいかによって、sequence
を1つずつ変更します。これを管理するためのより良い方法はありますか?
ええ、元の例は実際には完全には正規化されていません。標準的な方法は、IDで項目のルックアップテーブルを作成し、配列を使用して項目の順序を追跡することです。このトピックの詳細については、Reduxドキュメントの「構造化レジューサー」を参照してください。http://redux.js.org/docs/recipes/StructuringReducers.html – markerikson
おっと、おそらく自分自身を考えていたはずです!ありがとう –