我正在实现一个创建/编辑表,其中每一行都是一个表单(一次创建和多次编辑)。
我的问题是redux
商店架构支持复杂的表格。
autocomplete
选项的加载(针对每种形式)以下是我的情况的一个示例:
Cat to toy Page
| id | cat | toy | actions |
|--------|---------------------------------------|---------------------------------------|---------------|
| create | autocomplete(selectedCat, catOptions) | autocomplete(selectedToy, toyOptions) | [add new row] |
| 1 | autocomplete(selectedCat, catOptions) | autocomplete(selectedToy, toyOptions) | [update row] |
| 2 | autocomplete(selectedCat, catOptions) | autocomplete(selectedToy, toyOptions) | [update row] |
| ... | ... | ... | ... |
| 10 | autocomplete(selectedCat, catOptions) | autocomplete(selectedToy, toyOptions) | [update row] |
[<<] [<] 1 2 3 ... 33 [>] [>>]
表格包含休假
autocomplete
输入autocomplete
输入,其中的选项是异步的(类似于cat)数据蔗糖是相当简单的REST端点:
GET api/cat
(支持过滤和分页)GET api/toy
(支持过滤和分页)GET|POST|PUT|DELETE api api/catToys{/id?}
我当前的商店架构如下:
//Models (entity from API)
`CatModel` { id: number, name: string }
`ToyModel` { id: number, name: string }
`CatToToyModel`: { id: number, cat: CatModel, toy: ToyModel }
//States
`CatToToyPageState` {
page: number,
pageSize: number,
catToToyIds: Array<number>,
}
`CatToToyFormState` {
catOptionIds: Array<number>,
catFilter: string,
selectedCat: Cat,
isCatOptionsLoading: bool,
selectedToy: 'catToToyPage',
toyOptionIds: Array<number>,
selectedCat: Toy,
isToyOptionsLoading: bool,
isLoading: bool, // indicates if form submission
}
//The Store
`Store` {
entity: {
cat: Map<number, CatModel>,
toy: Map<number, ToyModel>,
catToToy: Map<number, CatToToyModel>,
},
uiState: {
catToToyPage: CatToToyPageState,
catToToyForms : Map<number, CatToToyFormState>
}
}
上面的商店很好,可以让我支持多种形式的住在一起
我的问题:
entity
(仅合并实体状态)的情况下有效。autocomplete
中支持store
有点麻烦(就我而言,我是猫和玩具的重复成员)。create
格式放在何处(当前位于uiState.catToToyForms[null]
中,这很糟糕)谢谢。