【发布时间】:2021-05-27 16:49:50
【问题描述】:
我有一个状态数组,我想对其执行操作然后更新状态,但似乎我在某处缺少深层副本并且状态在没有 setState 的情况下更新,这会导致我出现问题(我知道这是因为我即使没有 setState 行,状态也会更新)。
const itemsToRemove = ['Pepsi', 'Fanta'];
let temp = [...this.state.categories];
let categoryToUpdate = temp.find((category) => category.name == 'drinks');
categoryToUpdate.items = categoryToUpdate.items.filter((item) => {
return !itemsToRemove.includes(item);
});
//this.setState({categories: temp})
在这些行之后,我希望 categories 状态为“drinks”名称的对象仍包含 itemsToRemove 中的项目,因为我没有更新状态,但它们仍会从状态中删除。
categories状态的结构如下:
categories:[{name: String, items: Object}...]
【问题讨论】:
标签: javascript arrays reactjs deep-copy