我有一个名为state的数组,其中装满了名为items的对象:
const [items, setItems] = useState([{name: "", toppings: []}])
然而,当我尝试使用此函数删除指定索引时:
const removeItem = (index) => {
setItems(items.filter((item, i) => i !== index))
areItemsCompleted()
}
当我在函数外部将元素打印到控制台时,它可以正常工作,但是项目渲染不正确。 它只从jsx中删除数组的最后一个元素,但items
数组的值是正确的。 我曾经在某个地方读到,React仅浅层检查状态变化,因此它不会检查要删除的对象的内容。 但是,我不确定为什么控制台显示items
具有正确的值,但组件没有呈现正确的数据。 (相反,它呈现相同的数据,除了items
中的最后一个元素。)
我尝试了多种方法来从我的数组中删除元素,例如:
const removeItem = (index) => {
let arr = [...items]
arr.splice(index, 1)
setItems(arr)
areItemsCompleted()
}
我如何从对象数组中删除一个元素并呈现正确的数据?
setItems()
出了问题,而filter()
运行正常?我不确定,但一个沙盒会有所帮助。 - HoldOffHunger