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);
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
}
})
}
添加回答
举报