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,我已经提到了你提到的链接。它们包括对象的更新。我找不到相同的方法来更新嵌套数组。