【发布时间】:2018-12-04 10:20:41
【问题描述】:
我有一些状态
state = {
theme: {
background: { bgType: 'colour', value: '#449dc7' },
primary: '#4d5a66',
secondary: '#476480',
},
};
当我尝试更新嵌套属性(例如 background)时,我调用 setState,如下所示
this.setState(prevState => ({
...prevState,
theme: { background: { bgType: 'colour', value: color.hex } },
}));
然而,这只是用
替换状态 theme: { background: { bgType: 'colour', value: color.hex } },
我失去了其他属性
【问题讨论】:
-
它是因为您将新值分配给主题,而不是合并旧值和新值。像这样更新它:
theme: { ...prevState.theme, background: { bgType: 'colour', value: color.hex } },