我的应用程序中有一个简单的列表组件。我希望列表项可以选择。所以我的应用程序状态如下所示:
AppState {
items: Array<Item>,
selected: Array<Identifier>
}
我的引导程序:
bootstrap(AppComponent, [
provideStore({
items: ItemsReducer,
selected: SelectedReducer
})
]);
List 的行为很简单。单击 - 项目的 ID 添加到选定的数组,其他被清除。Ctrl+Click - 项目的 ID 添加到选定的数组,其他保留。使用当前结构很容易实现。
但我也希望可以使用 Shift+Click 选择一系列项目 - 在这种情况下,也应该选择上次选择和当前项目之间的所有项目。为此,我不仅需要知道当前项目,还需要知道最后选择的项目,并有权访问列表以查找它们之间的项目。但显然我无权访问items
in SelectedReducer
。
那么我该怎么做呢?我是否应该考虑重组我的商店,所以items
并且selected
会处于一个状态对象中?还是使用redux-thunk(似乎有点过头了)?还有其他选择吗?