如果在新状态React中缺少默认状态值,则保持默认状态值

时间:2018-01-04 17:33:15

标签: javascript reactjs state

我希望状态保留所有属性,即使新状态没有。是否有可能以简单快捷的方式进行?

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 },
}

2 个答案:

答案 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}

它将使用新属性覆盖旧状态。新版本中不存在的任何内容都将具有旧值。