我如何在React JS中更改对象数组的状态

时间:2019-12-05 23:53:18

标签: javascript reactjs

我正在尝试对自己的状态做出反应,而我的状态是

This.state = {
 Name: "alex",
 Referrals: [
   {
     Id: 1,
     HasRegistered: false,
     friend: {
      Name: "john",
      Age: "19",
      Amount: 150
    }
   },
   {
     Id: 2,
     HasRegistered: false,
     friend: {
      Name: "jane",
      Age: "18",
      Amount: 100
    }
   }
 ]
}

如何更改引荐数组中每个对象的属性

我尝试使用:

This.setState(prevState => {
  Return prevState.referrals.map(user => 
  {
    Return {
      ...user,
      HasRegistered: !user.HasRegistered,
      friend: {
       ...user.friend,
       Amount: user.friend.amount += 10
      }
    }
  })
})

注意:我使用onClick事件触发状态更改,并考虑了每个用户的ID。 该代码将数量增加10,但不会将HasRegistered布尔值更改为true 请问我该怎么办?

1 个答案:

答案 0 :(得分:0)

您在这里有一个正确的想法,但是也许您看到的问题是,由于prevState具有referrals属性,但您返回的{ 1}}调用,您只返回映射的引荐数组。另外,您还有一个setState可以修改原始对象。请改用此方法(我认为所有这些大写字母都是错误的):

+= 10