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
? ? }
? })
}
添加回答
舉報