我正在构建一个 React+Redux 应用程序,但我很难决定在哪里为我的数据生成 uid。
为了简化事情,我将使用经典的待办事项应用程序示例来解释我的问题(我的应用程序比这复杂得多)。
我目前有 addTodo、selectTodos、updateSelectedTodos 和 deleteSelectedTodos 的缩减器
我在调度 addTodo 操作之前在 React 组件中生成 uid。
selectTodos 将选定的 uid 存储在状态中。
updateSelectedTodos和deleteSelectedTodos将更新/删除状态中“选定”列表中列出的待办事项。
现在我需要添加一个新操作“duplicateSelectedTodo”,但我不确定最好的方法。我需要为重复项生成新的 uid。
由于我无法直接在减速器中执行此操作,因此我正在考虑的解决方案:
- 检索我的组件中选定的 id,生成新 id 并使用一系列新 id 分派重复项
- 相同,但包含待办事项的所有数据(可能有很多数据)
- 编写一个“addUid”中间件,它将首先触发并为所有需要一些 uid 的操作生成 uid。
任何的建议都受欢迎 :)
ps:像我现在一样在组件中生成 uid 对我来说感觉不太好......
您应该在创建操作的过程中生成 ID。
如果您手动编写动作创建器,它可能是:
const addTodo = (text) => {
const id = uuid();
return {type: "todos/addTodo", payload: {text, id}}
}
如果您正在使用Redux 工具包createSlice API https://redux-toolkit.js.org/api/createSlice(我会strongly推荐),它看起来像:
const todosSlice = createSlice({
name: "todos",
initialState: [],
reducers: {
addTodo: {
reducer(state, action) {
state.push(action.payload);
},
prepare(text) {
const id = uuid();
return { payload: {text, id} };
}
}
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)