Reactjs 在React SetState中更新数组内部的数组?

Reactjs 在React SetState中更新数组内部的数组?,reactjs,setstate,Reactjs,Setstate,状态中的一个元素恰好是嵌套数组,其中包含以下对象: this.state = { department: [ [ { "name": { "firstName": "John", "lastName": "Joestar" }, "age": 29 }, { "name": { "firstName": "George",

状态中的一个元素恰好是嵌套数组,其中包含以下对象:

this.state = {
  department: [
    [
      {
        "name": {
          "firstName": "John",
          "lastName": "Joestar"
        },
        "age": 29
      },
      {
        "name": {
          "firstName": "George",
          "lastName": "Thomas"
        },
        "age": 24
      }
    ],
    [
      {
        "name": {
          "firstName": "Mary",
          "lastName": "Jane"
        },
        "age": 40
      }
    ]
  ]
}

现在假设我需要更新部门[0][0]中的
firstName
。name.firstName给Joseph。使用
setState
更新
firstName
的正确方法是什么,而不影响效率?

您必须找到对象,将其分配给变量,更改并再次设置。一旦你有了一个对象数组,并选择其中一个,如果你改变对象引用将被找到

我想要一些东西:

department: [
    [
      {
        "name": {
          "firstName": "John",
          "lastName": "Joestar"
        },
        "age": 29
      },
      {
        "name": {
          "firstName": "George",
          "lastName": "Thomas"
        },
        "age": 24
      }
    ],
    [
      {
        "name": {
          "firstName": "Mary",
          "lastName": "Jane"
        },
        "age": 40
      }
    ]
  ]
....
const getDataToChange = this.state.department.find(dep => dep.name.firstName === "John");

getDataToChange.name.firstName = "Joseph"

this.setState(...this.state.department); 


我认为您可以制作一个部门阵列的虚拟或克隆,如下所示:

var departmentClone = [...this.state.department]
departmentClone[0].name.firstName = 'Joseph'
this.setState({department: departmentClone})
设置如下:

var departmentClone = [...this.state.department]
departmentClone[0].name.firstName = 'Joseph'
this.setState({department: departmentClone})
或者更多的小代码

var department = [...this.state.department]
department[0].name.firstName = 'Joseph'
this.setState({department})

你试过什么?是否有您试图解决的特定性能问题?“降低效率”有人认为,您需要告诉我们您认为更新状态的效率意味着什么?这是否回答了您的问题?最初,我克隆了整个对象,做了那个小改动,然后使用setState将整个对象设置回原处。但这似乎不是最佳的方式。然后,我提到了其他堆栈溢出问题,包括在
setState
update中使用
prevState
更新,在这种方法下,我可以更新对象数组,但我无法计算对象嵌套数组的更新。嗨,@ChristianFritz,我已经提到了你提到的链接。它们包括对象的更新。我找不到相同的方法来更新嵌套数组。