1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
是的,splice會(huì)影響它作用的數(shù)組,所以不要以這種方式使用。相反,您需要?jiǎng)?chuàng)建一個(gè)包含正確元素的新數(shù)組:
this.setState({
listArray: this.state.listArray.filter((el, idx) => idx !== i);
});
如果您只想刪除第一個(gè)實(shí)例,則可以先與 a findIndex(盡管也indexOf可以在您的示例中使用)結(jié)合使用:
delete(elem) {
const idxToFilter = this.state.listArray.findIndex(el => el === elem);
if (idxToFilter < 0) {
return;
}
this.setState({
listArray: this.state.listArray.filter((el, idx) => idx !== idxToFilter);
});
}
這將在不修改舊數(shù)組的情況下創(chuàng)建一個(gè)新數(shù)組,這將導(dǎo)致任何對(duì)listArray更改做出反應(yīng)的內(nèi)容都被通知,因?yàn)橐靡迅摹?/p>
添加回答
舉報(bào)