2 回答
TA贡献1836条经验 获得超13个赞
您的deleteItem函数可以像这样简化,同时确保不会跳过任何状态更新:
deleteItem = () => {
this.setState(prevState => {
return { monsters: prevState.monsters.filter((_, i) => i !== +prevState.deleteItemPosition)};
})
};
建议进行功能更新,因为您的新状态(新怪物阵列)取决于之前的状态。
更新:
您可以使用解构来避免prevState一直使用。并且您需要将 转换deleteItemPosition为数字,因为输入的值是字符串。
deleteItem = () => {
this.setState(({monsters, deleteItemPosition}) => {
return { monsters: monsters.filter((_, i) => i !== +deleteItemPosition)};
})
};
TA贡献1810条经验 获得超4个赞
只需对数组进行浅表复制monsters,应用Array.prototype.splice删除项目的方法并返回复制的monsters数组。
const copyMonsters = [...prevState.monsters];
copyMonsters.splice(deleteItemPosition, 1);
return {
monsters: copyMonsters
}
将此代码放入setState您的案例的函数中。
添加回答
举报