【发布时间】:2020-07-09 02:20:19
【问题描述】:
假设我有一份跟踪大学课程的申请。每门课程都有一些属性,如nametimenotesid。在应用程序中,用户可以添加/删除课程并编辑其属性。我将如何为此构建一个 redux 存储?
我的第一个想法是让状态成为一个映射对象,如下所示:
interface Course {
id: string;
name: string;
time: string;
notes: string;
}
interface StoreState {
[id: string]: Course;
}
状态中的每个条目对应一个课程实例。然后,当用户添加新课程时,我会在状态中添加一个新条目
const slice = createSlice({
name: 'courses',
initialState: {},
reducers: {
addCourse: (state, action) => {
state[action.payload.id] = {
id: action.payload.id,
name: action.payload.name,
...
...
}
},
updateNotes: (state, action) => {
state[action.payload.id].notes = action.payload.notes
}
...
...
}
})
这并不理想,因为在每种情况下我都必须重复使用课程 id 来更新正确的课程。我想在商店中为 each 课程有一个状态对象,并像这样编写我的案例缩减器:
updateNotes: (state, action) => {
state.notes = action.payload.notes
}
我不必担心我要更新哪个课程,因为它们的功能都相同。有没有办法为共享相同 reducer 逻辑的每门课程动态创建状态?
【问题讨论】:
标签: javascript typescript redux redux-toolkit