首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除对象中的特定数据/对象?(ReactJs Reducer)

如何删除对象中的特定数据/对象?(ReactJs Reducer)
EN

Stack Overflow用户
提问于 2021-02-22 10:01:50
回答 2查看 31关注 0票数 0

如果我的上下文是这样的

代码语言:javascript
复制
const [data, dispatch] = useReducer(dataReducer, {
        projects:{},
        tasks:{},
    });

数据是

代码语言:javascript
复制
 {
        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‘?

EN

回答 2

Stack Overflow用户

发布于 2021-02-22 10:55:02

总而言之,您需要从项目和任务中复制没有'task-2‘的对象,并将其作为新状态传递,因为对象中的对象需要一个称为'deep copy’的特殊操作。因此,我建议您应该将项目和任务分开,因为reducer需要一个完整的对象来将当前状态更新为新状态。

然后,您可以向每个reducer传递一个您希望这样传递的对象:

任务:

代码语言:javascript
复制
 // tasks
 {
        tasks:{
            'task-1':{
                title:'Eat',
                time:'1:30pm',
            },
            'task-3':{
                title:'Sleep',
                time:'9:00pm',
            },
        },
}

项目:

代码语言:javascript
复制
// projects
{
        projects:{
        'first':{
            name:'first',
            taskIds:['task-1'],
        },
        'second':{
             name:'second',
            taskIds:['task-3'],
        },
}
票数 0
EN

Stack Overflow用户

发布于 2021-02-22 11:27:59

代码语言:javascript
复制
let projects = action.projects
let tasks = action.tasks
delete tasks['task-2']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66309128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档