javascript - 如何通过单击按钮从 react 状态 Hook 数组中删除对象

标签 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>
            )
        })
    }

最佳答案

你可以用 filter 来做到这一点:

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

虽然您可能会使用更常量来访问项目,例如 id。

关于javascript - 如何通过单击按钮从 react 状态 Hook 数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60977463/

相关文章:

javascript - 从 Angular 4 的数组列表中删除错误的项目

javascript - "npm install <github url>"从NPM而不是GitHub下载

javascript - 当我将 'console.log(err.message)' 放入 express 应用程序的错误处理程序中时,它会无休止地记录,但为什么呢?

javascript - 转义标题中的单引号

java - 并行数组和从文件读取整数/ double 的问题

reactjs - ionic + react : Exit app after click Back Button on hardware

javascript - 在javascript中将树从graphql格式转换为json格式

javascript - 如何从自定义钩子(Hook)验证中正确显示错误消息?

javascript - 如何阅读这个 Javascript 语句

php - 将MySQL查询结果存储到二维数组中