アプリに単純なリスト コンポーネントがあります。そして、リスト項目を選択可能にしたい。したがって、私のアプリケーションの状態は次のようになります。
AppState {
items: Array<Item>,
selected: Array<Identifier>
}
そして私のブートストラップ:
bootstrap(AppComponent, [
provideStore({
items: ItemsReducer,
selected: SelectedReducer
})
]);
リストの動作は単純です。シングル クリック - アイテムの ID が選択したアレイに追加され、その他はクリアされます。Ctrl+クリック - 項目の ID が選択した配列に追加され、他は残ります。現在の構造で実装するのは簡単です。
しかし、Shift+クリックでアイテムの範囲を選択できるようにしたい - その場合、最後に選択されたアイテムと現在のアイテムの間のすべてのアイテムも選択されるべきです。そのためには、現在のアイテムだけでなく、最後に選択されたアイテムも知り、それらの間のアイテムを見つけるためにリストにアクセスできる必要があります。items
しかし、明らかに私はin にアクセスできませんSelectedReducer
。
では、どうすればそれを行うことができますか?ストアを再構築することを検討する必要があるのでitems
、selected
1 つの状態オブジェクトになりますか? またはredux-thunkを使用しますか (やり過ぎのようです)? 他のオプションはありますか?