我试图将多个元素分配给一个对象而没有成功。数据被覆盖而不是添加。我对此并不陌生,因此不确定Object.assing()
是否是正确的选择。如何向对象添加多组数据?
伪代码
代码
_selectDate = obj => {
let selection = {}
const { startDate, endDate } = this.state
if (!startDate) {
Object.assign(selection, {
[obj.dateString]: { startingDay: true, color: 'black', textColor: 'white' },
})
} else {
Object.assign(selection, {
[obj.dateString]: { endingDay: true, color: 'black', textColor: 'white' },
})
}
this.setState({
startDate: !startDate,
test: selection,
})
}
需要的结果
{
'2018-08-20': { startingDay: true, color: 'black', textColor: 'white' },
'2018-08-21': { selected: true, color: 'black', textColor: 'white' },
'2018-08-22': { selected: true, color: 'black', textColor: 'white' },
'2018-08-04': { endingDay: true, color: 'black', textColor: 'white' },
}
答案 0 :(得分:3)
在每次调用时创建新对象的问题:
let selection = {}
这就是为什么您无法“累积”此数据的原因。
要解决此问题,您应该从自己的州获得它,就像这样:
let selection = this.state.test
然后(在if语句中)进行赋值:
selection = {
...selection,
[obj.dateString]: {
endingDay: true,
color: 'black',
textColor: 'white'
},
}