我需要将新对象推入状态变量而不删除先前的值。我的状态是
this.state = {
files:{
file1:
{
user1:[{
key1: val1,
key2: val2,
key3: val3
},
{
key1: val1,
key2: val2,
key3: val3
}
]
}
}
}
我需要将files
更新为
files:{
file1:
{
user1:[{
key1: val1,
key2: val2,
key3: val3
},
{
key1: val1,
key2: val2,
key3: val3
}
]
},
file2:
{
user2:[{
key1: val1,
key2: val2,
key3: val3
},
{
key1: val1,
key2: val2,
key3: val3
}
]
}
}
我需要将新对象file2
推入具有与file1
相同结构的值的状态。如何使用这两个对象更新状态?
答案 0 :(得分:1)
您应该使用setState
函数表达式,以便可以访问以前的状态:
addFile(newFile) {
this.setState(state => ({
files: {...state.files, ...newFile}
})
}
newFile
应该是一个如下所示的对象:
{
file2: {
...
}
}
此对象合并到先前的状态。如果已经存在具有相同键(file2
)的条目,则它将被覆盖。
答案 1 :(得分:0)
您可以使用spread运算符来实现此目的。 它可以添加如下:
this.setState({
file1: [...this.state.file1,{key1:'val1',key2:'val2',key3:'val3'}]
})