我希望状态保留所有属性,即使新状态没有。是否有可能以简单快捷的方式进行?
this.state={
fruits:['apple','orange'],
hungry:false,
drinks:{ alchohol:false, diary:false }
}
var newState= {
fruits:['apple','orange'],
hungry:false,
}
// new state
this.setState({...newState});
i get state
{
fruits:['apple','orange'],
hungry:false,
}
but i want
{
fruits:['apple','orange'],
hungry:false,
drinks:{ alchohol:false, diary:false },
}
答案 0 :(得分:1)
定义新状态时尝试此操作
var newState= {
...this.state,
fruits:['apple','orange'],
hungry:false,
}
答案 1 :(得分:0)
这应该这样做:
this.state = { thing: ‘foo’, otherThing: 1 };
const newState = { otherThing: 5 };
this.setState(Object.assign({}, this.state, newState));
完成后状态为{thing:'foo',otherThing:5}
它将使用新属性覆盖旧状态。新版本中不存在的任何内容都将具有旧值。