我目前正在一个项目中,我必须维护一个对象,该对象包含js中较小的对象(集合)的数组。添加和编辑似乎工作正常,但是在尝试从对象中删除时遇到了障碍。
removeCollection(collectionId, index){
let copyCollectionItems = {...this.state.collectionItems};
copyCollectionItems[collectionId].splice(index, 1);
this.setState({ collectionItems: copyCollectionItems});
}
在上面的代码中,调用之前对象的状态类似于:
{
collectionId-1: Array(4)[{...}, {...}, {...}, {...}],
collectionId-2: Array(2)[{...}, {...}],
collectionId-3: Array(1)[{...}]
}
假设传入的collectionId是“ collectionId-1”,我希望在调用后对象看起来像这样:
{
collectionId-1: Array(3)[{...}, {...}, {...}],
collectionId-2: Array(2)[{...}, {...}],
collectionId-3: Array(1)[{...}]
}
相反,我看到在函数调用之后对象没有任何变化(collectionId-1在数组中仍然有4个对象)。
我复制对象的方式有问题吗?也许参考数据正在覆盖新数据?我不知道为什么对象没有改变。
我还应该补充一点,如果输入的索引为0,则删除成功。任何其他索引都不会更改对象。