为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的拼接删除了除第一个以外的所有拼接而不是仅删除指定的拼接?

为什么我的拼接删除了除第一个以外的所有拼接而不是仅删除指定的拼接?

BIG阳 2023-05-11 10:18:20
对于给定的数组,当我运行拼接时,除了第一个条目之外的所有内容都被删除。但是我希望只删除选定的条目。我怀疑这与我的 i 设置方式有关,但我不确定问题出在哪里。removethisone = (i) => {this.setState(state=>({list: state.list.splice(i,1)}))}    <ul>    {this.state.list.map((entry, i)=><li key={i}><button onClick={this.removethisone}>{i+1}</button>{entry}</li>)}    </ul>
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

发生这种情况的原因是因为该Array.splice方法返回数组中删除的项目。


你需要做这样的事情:


removethisone = (i) => {

  this.setState(state => {

    const nextState = [ ...state.list ]

    nextState.splice(i, 1)


    return { list: nextList }

  })

}

例如,运行下面的代码以查看输出:


// This is what your code does

let numbers = [1, 2, 3, 4, 5];

let removedNumbers = numbers.splice(2, 1)

numbers = removedNumbers


console.log(numbers);

console.log(removedNumbers);


查看完整回答
反对 回复 2023-05-11
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您的代码完全按照您的描述工作,因为这就是splice 的工作方式。

splice 方法返回被删除的项目的数组。您正在将移除的项目存储回状态。因此,为什么你得到你删除的东西。

removethisone = (i) => {

  this.setState(state => {

    const list = state.list;

    const removedElems = list.splice(i, 1);

    console.log(removedElems);

    return {

      list

    }

  })

}


查看完整回答
反对 回复 2023-05-11
  • 2 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信