Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在基于redux的应用程序中在何处生成uid_Reactjs_Redux_Uuid - Fatal编程技术网

Reactjs 在基于redux的应用程序中在何处生成uid

Reactjs 在基于redux的应用程序中在何处生成uid,reactjs,redux,uuid,Reactjs,Redux,Uuid,我正在构建一个react+redux应用程序,我很难决定在哪里为我的数据生成uid 为了简化事情,我将使用经典的todo应用程序示例来解释我的问题(我的应用程序要比这个复杂得多) 我目前有addTodo、selectTodos、updateSelectedTodos和deleteSelectedTodos的还原程序 在分派addTodo操作之前,我正在react组件中生成uid selectTodos将所选uid存储在状态中 updateSelectedTodos和deleteSelectedT

我正在构建一个react+redux应用程序,我很难决定在哪里为我的数据生成uid

为了简化事情,我将使用经典的todo应用程序示例来解释我的问题(我的应用程序要比这个复杂得多)

我目前有addTodo、selectTodos、updateSelectedTodos和deleteSelectedTodos的还原程序

在分派addTodo操作之前,我正在react组件中生成uid

selectTodos将所选uid存储在状态中

updateSelectedTodos和deleteSelectedTodos将更新/删除状态为“selected”列表中列出的todos

现在我需要添加一个新操作“duplicateSelectedTodo”,但我不确定最好的方法。我需要为副本生成新的uid。 由于我无法直接在减速器中执行此操作,因此我想到了以下解决方案: -在“我的组件”中检索所选ID,生成新ID,并使用新ID数组发送副本 -相同,但包含todo的所有数据(可能有很多数据) -编写一个“addUid”中间件,它将在第一行触发,并为所有需要一些uid的操作生成uid

欢迎提供任何建议:)


ps:像我现在这样在组件中生成uid对我来说不太合适…

您应该在创建操作的过程中生成ID

如果您手工编写动作创建者,则可能是:

const addTodo=(文本)=>{
常量id=uuid();
返回{type:“todos/addTodo”,有效负载:{text,id}
}
如果您正在使用(我强烈推荐),它将如下所示:

const todoslice=createSlice({
名称:“待办事项”,
初始状态:[],
减速器:{
地址:{
减速器(状态、动作){
状态推送(动作有效载荷);
},
准备(文本){
常量id=uuid();
返回{payload:{text,id}};
}
}
}
})

您的数据库能否生成
uuid
?@JosephD。我没有db,它是一个单页应用程序。我使用redux工具包和CreateSicle:)太棒了,谢谢!即使我几乎把这些文件从头到尾读了一遍,我还是没听懂。这就像文档作者假设您已经是Redux的专家,并且正在切换到toolkit:(实际上,是的,这就是RTK文档目前的编写方式——它们假设您已经熟悉如何手动使用Redux,并关注使用RTK时的差异。当前文档在中讨论了“准备回调”,以及。