我想更新一个嵌套状态,该状态包含React应用程序中的一个数组
我想更新此嵌套状态 data 属性 更新以更新标签
let key = 0;
this.setState(prevState => ({
datas: prevState.datas.datasets.map(
el => el.key === key? { ...el, data: this.state.responseToPost.taux }: el
)
}))
但是当我将其用于数据时:
datas: {
labels: [],//this.state.dataLabel,
datasets: [
{
//
//some param
data: []
}
]
}
这是我想使用处理程序更新的嵌套状态
plane node
答案 0 :(得分:0)
由于变量名称不一致,因此我不确定是否能得到您的示例。
但是我认为您正在寻找的是...
运算符,它用另一个的“内容”“填充”一个数组或一个对象。
例如,我首先定义一个对象-然后定义一个新对象,其中包含相同的constant
参数,但参数shouldBeChanged
的值不同。
var obj = {
constant0: 0,
constant1: 1,
shouldBeChanged: 'old value'
};
// Here I only change a single nested parameter
var newObj = {...obj,
shouldBeChanged: 'new value'
};
console.log(newObj);
答案 1 :(得分:0)
在我的研究中,我发现了此表达式的用例。 我之前没有使用过该表达式,因为@GalAbra的答案解决了我的问题。 所以我回来告诉我我对以下表达式的理解:
let key = 0; // providing id
this.setState(prevState => ({
datas: prevState.datas.datasets.map(
el => el.key === key? { ...el, data: this.state.responseToPost.taux }: el
)
}))
当我要从对象的ID更新对象状态数组中包含的对象 时,我又回到了此消息。我以这种语法为例并编写了此代码。
dataStruc :[] // state containing objects
updatObj // updated object
this.setState(prevState=>({
dataStruc:prevState.dataStruc.map(el=>( el.id!== updObj.id ? {...el} : updatObj))
}));