首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在深度嵌套的对象中删除状态?

如何在深度嵌套的对象中删除状态?
EN

Stack Overflow用户
提问于 2019-03-05 22:19:59
回答 1查看 428关注 0票数 2

我正在使用Redux应用程序在ReactJS上工作。我对我的状态进行了更改,这导致了额外的属性层。所以原始的状态结构是:

代码语言:javascript
复制
filters: {
    filterGroupId-1 : {
        id: filterGroupId-1
        selectedFilters: []
    }
    filterGroupId-2 : {
        id: filterGroupId-1
        selectedFilters: []
    }
    filterGroupId-3 : {
        id: filterGroupId-1
        selectedFilters: []
    }
}

现在,它已更改为:

代码语言:javascript
复制
filters: {
    dataSource-1: {
        filterGroupId-1 : {
            id: filterGroupId-1
            selectedFilters: []
        }
        filterGroupId-2 : {
            id: filterGroupId-1
            selectedFilters: []
        }
        filterGroupId-3 : {
            id: filterGroupId-1
            selectedFilters: []
        }
    }

    dataSource-2 {
        ...
    }
}

要删除过滤器组,我最初在filters reducer中有以下代码:

代码语言:javascript
复制
case FILTER_GROUP_DELETED:
    const { [action.data.filterGroupId]: deletedValue, ...newState } = state;

    return newState

我需要对上面的代码片段进行哪些更改,以说明引入到状态结构中的额外层?(筛选器组对象现在位于数据源属性下)

感谢任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 22:30:34

你可以从你的状态中提取你的对象,然后应用完全相同的方法来删除你的元素,然后你将从你的开关中返回一个JSON对象,并直接对它使用setState

代码语言:javascript
复制
case FILTER_GROUP_DELETED:
    const { ['dataSource-1']: dataSource } = state;
    const { [action.data.filterGroupId]: deletedValue, ...newSource } = dataSource;

    return { 'dataSource-1':  newSource }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55004928

复制
相关文章

相似问题

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