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

时间:2019-03-05 14:19:59

标签: javascript reactjs react-redux

我正在使用Redux应用程序开发ReactJS。我更改了状态,从而增加了一层属性。所以原来的状态结构是:

filters: {
    filterGroupId-1 : {
        id: filterGroupId-1
        selectedFilters: []
    }
    filterGroupId-2 : {
        id: filterGroupId-1
        selectedFilters: []
    }
    filterGroupId-3 : {
        id: filterGroupId-1
        selectedFilters: []
    }
}

现在已更改为:

filters: {
    dataSource-1: {
        filterGroupId-1 : {
            id: filterGroupId-1
            selectedFilters: []
        }
        filterGroupId-2 : {
            id: filterGroupId-1
            selectedFilters: []
        }
        filterGroupId-3 : {
            id: filterGroupId-1
            selectedFilters: []
        }
    }

    dataSource-2 {
        ...
    }
}

要删除过滤器组,我最初在过滤器精简器中具有以下代码:

case FILTER_GROUP_DELETED:
    const { [action.data.filterGroupId]: deletedValue, ...newState } = state;

    return newState

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

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以从状态中提取对象,然后使用完全相同的方法删除元素,然后从交换机中返回JSON对象,并直接使用setState

case FILTER_GROUP_DELETED:
    const { ['dataSource-1']: dataSource } = state;
    const { [action.data.filterGroupId]: deletedValue, ...newSource } = dataSource;

    return { 'dataSource-1':  newSource }