我只有在具有相同ID的情况下才能修改状态

时间:2019-03-10 21:06:16

标签: javascript reactjs

editItem = (id) => {
    this.setState(
      {
        lanche: [
        {
          id: id,
          editItem: true
        }]
      }
    )
  }

这样,setState在数组中的所有项目上运行,我只需要编辑具有相同ID的项目

3 个答案:

答案 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 });