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

对于给定的数组,当我运行拼接时,除了第一个条目之外的所有内容都被删除。但是我希望只删除选定的条目。我怀疑这与我的 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>


BIG阳
浏览 104回答 2
2回答

白衣非少年

发生这种情况的原因是因为该Array.splice方法返回数组中删除的项目。你需要做这样的事情:removethisone = (i) => {&nbsp; this.setState(state => {&nbsp; &nbsp; const nextState = [ ...state.list ]&nbsp; &nbsp; nextState.splice(i, 1)&nbsp; &nbsp; return { list: nextList }&nbsp; })}例如,运行下面的代码以查看输出:// This is what your code doeslet numbers = [1, 2, 3, 4, 5];let removedNumbers = numbers.splice(2, 1)numbers = removedNumbersconsole.log(numbers);console.log(removedNumbers);

慕姐4208626

您的代码完全按照您的描述工作,因为这就是splice 的工作方式。splice 方法返回被删除的项目的数组。您正在将移除的项目存储回状态。因此,为什么你得到你删除的东西。removethisone = (i) => {  this.setState(state => {    const list = state.list;    const removedElems = list.splice(i, 1);    console.log(removedElems);    return {      list    }  })}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript