【发布时间】:2019-12-11 23:17:47
【问题描述】:
我有一个对象数组。我需要添加一个函数来从我的数组中删除一个对象,而不使用“this”关键字。
我尝试使用updateList(list.slice(list.indexOf(e.target.name, 1)))。这会删除数组中除最后一项之外的所有内容,我不确定为什么。
const defaultList = [
{ name: "ItemOne" },
{ name: "ItemTwo" },
{ name: "ItemThree" }]
const [list, updateList] = useState(defaultList);
const handleRemoveItem = e => {
updateList(list.slice(list.indexOf(e.target.name, 1)))
}
return (
{list.map(item => {
return (
<>
<span onClick={handleRemoveItem}>x </span>
<span>{item.name}</span>
</>
)}
}
)
预计:点击的项目将从列表中删除。
实际:整个列表被删除,减去数组中的最后一项。
提前感谢您的任何意见!
【问题讨论】:
-
对于初学者来说,跨度上没有
name。做一些基本的调试,看看e.target.name是什么。然后...阅读文档以了解slice()的工作原理以及indexOf()的工作原理。您在该方法中有多个问题 -
你说得对,跨度上没有名字。这就是为什么名称指的是从数组映射的项目。你甚至读过这篇文章吗?
-
不,它不在您使用
onClick={handleRemoveItem}的上下文中。你在函数内部检查了吗? -
@collinswade408 请参阅下面的解决方案。这应该让您了解如何完成您的解决方案以及您的代码为什么不起作用。
标签: reactjs typescript react-hooks