gpt4 book ai didi

javascript - ReactJS中嵌套 map 上的setState打破原始对象结构

转载 作者:行者123 更新时间:2023-11-30 14:22:38 25 4
gpt4 key购买 nike

我有一个对象数组,我想添加/更改一个匹配typekey 的新属性。

[
{
"type": "a",
"units": [
{
"key": "keyofba"
},
{
"key": "mytargetkey"
}
]
},
{
"type": "b",
"units": [
{
"key": "keyofb"
}
]
},
{
"type": "ab",
"units": [
{
"key": "mytargetkey"
}
]
}
]

我试过了

this.setState({
schema: schema.map(s => {
if (s.type === 'a' || s.type === 'ab') { //hardcord for testing
return s.units.map(unit => {
if (unit.key === 'mytargetkey') {
return {
...unit,
newProp: 'newProp value'
}
} else {
return { ...unit }
}
})
} else {
return { ...s }
}
})

但不知何故它不起作用,我想我错过了一些东西,需要 spotter。

最佳答案

那是因为你必须返回在新对象内部修改的列表,如果不是目标,则按原样返回元素:

schema.map(s => {
if (s.type === 'a' || s.type === 'ab') { //hardcord for testing
return {...s, units: s.units.map(unit => {
if (unit.key === 'mytargetkey') {
return {
...unit,
newProp: 'newProp value'
}
} else {
return unit
}
})}
} else {
return s
}
})

关于javascript - ReactJS中嵌套 map 上的setState打破原始对象结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com