React中state为对象时的更新办法

刚开始学React,定义状态为对象时更新时出现了问题.

单个属性的赋值会替代整个对象

最后使用Object.assign()方法,通过拷贝对象解决问题

Object.assign(目标对象,源对象,源对象...)

会将源对象的拷贝到目标对象上,同时,如果目标对象和源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性

let tempState = Object.assign({}, this.state.usersMsg, {[type]: value });
this.setState({
  usersMsg:tempState
})

userMsg为state中需要更改的对象,{[type]: value }为对象中需要更新的值.

需要更新的值包裹成对象,会覆盖前面userMsg对象中的属性,再拷贝到空对象中,实现整个对象的替换,返回的新对象赋值用来更新state

你可能感兴趣的:(React)