如果我的上下文是这样的
const [data, dispatch] = useReducer(dataReducer, {
projects:{},
tasks:{},
});数据是
{
projects:{
'first':{
name:'first',
taskIds:['task-1'],
},
'second':{
name:'second',
taskIds:['task-2','task-3'],
},
},
tasks:{
'task-1':{
title:'Eat',
time:'1:30pm',
},
'task-2':{
title:'Work',
time:'2:30pm',
},
'task-3':{
title:'Sleep',
time:'9:00pm',
},
},
}如何使用reducer删除projects.second和tasks对象中的'task-2‘?
发布于 2021-02-22 10:55:02
总而言之,您需要从项目和任务中复制没有'task-2‘的对象,并将其作为新状态传递,因为对象中的对象需要一个称为'deep copy’的特殊操作。因此,我建议您应该将项目和任务分开,因为reducer需要一个完整的对象来将当前状态更新为新状态。
然后,您可以向每个reducer传递一个您希望这样传递的对象:
任务:
// tasks
{
tasks:{
'task-1':{
title:'Eat',
time:'1:30pm',
},
'task-3':{
title:'Sleep',
time:'9:00pm',
},
},
}项目:
// projects
{
projects:{
'first':{
name:'first',
taskIds:['task-1'],
},
'second':{
name:'second',
taskIds:['task-3'],
},
}发布于 2021-02-22 11:27:59
let projects = action.projects
let tasks = action.tasks
delete tasks['task-2']https://stackoverflow.com/questions/66309128
复制相似问题