editItem = (id) => {
this.setState(
{
lanche: [
{
id: id,
editItem: true
}]
}
)
}
这样,setState在数组中的所有项目上运行,我只需要编辑具有相同ID的项目
答案 0 :(得分:2)
您需要在数组中找到具有给定ID的项目,然后仅修改该项目。 setState方法使用给定的键更改整个对象。
尝试一下:
editItem = (id) => {
this.setState(
{
lanche: this.state.lanche.map(item => {
if(item.id === id) {
item.editItem = true
}
return item;
})
}
)
}
答案 1 :(得分:1)
您可以使用这样的地图:
editItem = (id) => {
// update the relevant item
const updatedItems = this.state.lanche.map(item => {
if (item.id === id) {
item.editItem = true;
}
return item;
} );
this.setState(
{
lanche: updatedItems
}
)
}
答案 2 :(得分:1)
如果我理解您的问题;
您可以像这样搜索索引;
const index = this.state.lanche.findIndex((e) => e.id === id);
然后更改对象
const newLanche = this.state.lanche;
newLanche[index].editItem = true;
然后更新商店;
this.setState({ lanche: newLanche });