我的应用中有一个简单的列表组件。我希望列表项可以选择。所以我的申请状态如下:
AppState {
items: Array<Item>,
selected: Array<Identifier>
}
我的引导:
bootstrap(AppComponent, [
provideStore({
items: ItemsReducer,
selected: SelectedReducer
})
]);
List的行为很简单。单击 - 项目的ID添加到选定的阵列,其他项目被清除。 Ctrl +单击 - 项目ID添加到选定阵列,其他保留。使用当前结构很容易实现。
但我也希望能够使用Shift + Click选择一系列项目 - 在这种情况下,也应该选择最后选择的项目和当前项目之间的所有项目。要做到这一点,我不仅要知道当前项目,还要知道最后选择的项目,并且可以访问列表以查找它们之间的项目。但显然我无法访问items
中的SelectedReducer
。
那我怎么能这样做?我是否应该考虑重构我的商店,因此items
和selected
将在一个州对象中?或者使用redux-thunk(看起来像是矫枉过正)?还有其他选择吗?