javascript - 使用唯一 ID 从处于状态的数组中删除对象

标签 javascript arrays reactjs object html-framework-7

我列出了哪些元素必须可删除(例如使用删除按钮)。我怎样才能从 react 中实现这一点?

这是我的状态:

state = {
        infos: [
            {
                id: 1,
                info: 'some info',
                deleted: false
            },
            {
                id: 2,
                info: 'some info',
                deleted: false
            },
            {
                id: 3,
                info: 'some info',
                deleted: false
            }
        ]
    }

这是我尝试过的删除功能:

removeInfo() {
  this.state.infos.splice(key, 0)
}

这是我映射后得到的jsx代码:

{
                      this.state.infos.map((item, key) => {
                          return (
                              <ListItem key={item.key + key}>
                                  <Icon color="gray" f7="home" />
                                  <span className="text-black">{item.info}</span>
                                  <Button><Icon f7="edit" color="#39b549" /></Button>
                                  <Button onClick={this.removeInfo}><Icon color="black" f7="trash" /></Button>
                              </ListItem>
                          )
                      })
                  }

最佳答案

您需要进行一些更改。

首先我们需要将要删除的项目的 id 传递给删除函数:

 <Button onClick={()=>this.removeInfo(item.id)}><Icon color="black" f7="trash" /></Button>

然后您需要使用 setState 以不可变的方式从数组中删除该项目。

removeInfo(id) {
  this.setState(ps=>({infos:ps.infos.filter(x=>x.id!=id)}))
}

splice 改变数组。

关于javascript - 使用唯一 ID 从处于状态的数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55452060/

相关文章:

javascript - 使用数组 Javascript 制作幻灯片

java - android比较数组

arrays - 根据维度名称聚合数组

reactjs - MUI TextField 选择菜单的 maxHeight

javascript - Firefox 用户禁用 cookie 和 localStorage 的解决方案 - polyfill 不可能

javascript - 如果有多个选择字段,如何通过 javascript 或 jquery 刷新选择中的默认显示选项?

javascript - es6中lodash的findIndex

javascript - 组件中的 props 更改为 undefined

按住按键时的 Javascript easelJS 动画

java - Arrays$ArrayList 无法在 java 中转换为 java.util.ArrayList