我在对象(wid)数组内有一个对象(卡片)数组,它在对象(数据)中,如下所示:
{
data: {
ban: {
first: "one"
},
foo: {
second: "two"
},
wid: [
{
code: "three",
name: "four",
position: 1,
cards: [
{
title: "five",
id: "six"
}
]
},
{
code: "seven",
name: "eight",
position: 2,
cards: [
{
title: "nine",
id: "ten"
}
]
},
//...
{
code: "alpha",
name: "beta",
position: 12,
cards: [
{
title: "gamma",
id: "theta"
}
]
}
]
}
}
现在我从 API 获得另一个值,如下所示
const newWid = {
code: "new",
name: "newname",
position: 2,
cards: [
{
title: "newtile",
id: "newid"
}
]
}
我如何更改 data
:仅在数组 wid
中的对象内的 cards 被替换在新 wid 中提供的位置而不是 {{1} 内的整个对象}) 不可变,提供位置。 (wid
在 2
中提供)
附言。我没有使用 setState。
答案 0 :(得分:0)
const position = newWid.display //获取位置
//step1 : 获取wid里面的对象并更新它的卡片
const specificWid = { ...data.wid[position], cards : data.cards }
//step2 : 更新宽度
const newestWid = [...data.wid] newwid.splice( position , 1 , specificWidget)
//步骤3:
{...data, data : {...data, wid : [...newwid] } }