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

Posted

技术标签:

【中文标题】如何通过单击按钮从反应状态挂钩数组中删除对象【英文标题】:How to delete objects from react state hook array with a button click 【发布时间】:2020-07-13 14:11:09 【问题描述】:

我正在尝试制作一个按钮,根据传递的索引从数组中删除一个对象(这是状态),我尝试了很多,但我的方法都没有奏效:(,所以这是代码和希望能找人帮忙:

状态:

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】:

您可以使用filter

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

尽管您可能会使用更多常量来访问项目,例如 id。

【讨论】:

没有用,它删除了该数组中的最后一个对象,而不是想要的索引

以上是关于如何通过单击按钮从反应状态挂钩数组中删除对象的主要内容,如果未能解决你的问题,请参考以下文章

状态更改后反应无法正确渲染

单击事件后如何从 ReactJS 中的数组中删除对象

如何从特定单击的响应中删除数组中的索引

如何从 Reactjs 中的 useEffect 挂钩访问道具

每次单击按钮时如何删除数组中的对象?

Reactjs:使用状态挂钩单击时如何选择一张或多张卡片?