2 回答

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
發(fā)生這種情況的原因是因?yàn)樵揂rray.splice方法返回?cái)?shù)組中刪除的項(xiàng)目。
你需要做這樣的事情:
removethisone = (i) => {
this.setState(state => {
const nextState = [ ...state.list ]
nextState.splice(i, 1)
return { list: nextList }
})
}
例如,運(yùn)行下面的代碼以查看輸出:
// 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貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的代碼完全按照您的描述工作,因?yàn)檫@就是splice 的工作方式。
splice 方法返回被刪除的項(xiàng)目的數(shù)組。您正在將移除的項(xiàng)目存儲(chǔ)回狀態(tài)。因此,為什么你得到你刪除的東西。
removethisone = (i) => {
? this.setState(state => {
? ? const list = state.list;
? ? const removedElems = list.splice(i, 1);
? ? console.log(removedElems);
? ? return {
? ? ? list
? ? }
? })
}
添加回答
舉報(bào)