2 回答
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
您的deleteItem函數(shù)可以像這樣簡化,同時(shí)確保不會跳過任何狀態(tài)更新:
deleteItem = () => {
this.setState(prevState => {
return { monsters: prevState.monsters.filter((_, i) => i !== +prevState.deleteItemPosition)};
})
};
建議進(jìn)行功能更新,因?yàn)槟男聽顟B(tài)(新怪物陣列)取決于之前的狀態(tài)。
更新:
您可以使用解構(gòu)來避免prevState一直使用。并且您需要將 轉(zhuǎn)換deleteItemPosition為數(shù)字,因?yàn)檩斎氲闹凳亲址?/p>
deleteItem = () => {
this.setState(({monsters, deleteItemPosition}) => {
return { monsters: monsters.filter((_, i) => i !== +deleteItemPosition)};
})
};
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
只需對數(shù)組進(jìn)行淺表復(fù)制monsters,應(yīng)用Array.prototype.splice刪除項(xiàng)目的方法并返回復(fù)制的monsters數(shù)組。
const copyMonsters = [...prevState.monsters];
copyMonsters.splice(deleteItemPosition, 1);
return {
monsters: copyMonsters
}
將此代碼放入setState您的案例的函數(shù)中。
添加回答
舉報(bào)
