如何通过单击按钮从反应状态挂钩数组中删除对象

时间:2020-04-01 18:05:15

标签: javascript arrays reactjs filter react-hooks

我正在尝试创建一个按钮,该按钮根据传递的索引从数组(状态)中删除对象,我已经尝试了很多,但是我的方法都不起作用:(,所以代码和希望我能找到帮助的人:

状态:

const [items, setItems] = useState([{ name: "", quantity: "", unit: "" }]);

删除功能:

const deleteItem = (i) => {
    const newItems = [...items]
    newItems.splice(i, 1)
    setItems(newItems)
}

jsx元素:

    {
        items.map((item, i) => {
            return (
                <div key={i} className={`mt3 item-input-wrapper`}>
                    <div>some other els here</div>
                    <button onClick={() => deleteItem(i)} >delete item</button>
                </div>
            )
        })
    }

1 个答案:

答案 0 :(得分:5)

您可以使用filter来做到这一点:

const deleteItem = (i) => {
  setItems(currentItems => currentItems.filter((item, index) => index !== i));
}

也许您还可以使用更常量来访问项目,例如ID。