刚开始学React,定义状态为对象时更新时出现了问题.
单个属性的赋值会替代整个对象
最后使用Object.assign()方法,通过拷贝对象解决问题
Object.assign(目标对象,源对象,源对象...)
会将源对象的拷贝到目标对象上,同时,如果目标对象和源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性
。
let tempState = Object.assign({}, this.state.usersMsg, {[type]: value }); this.setState({ usersMsg:tempState })
userMsg为state中需要更改的对象,{[type]: value }为对象中需要更新的值.
需要更新的值包裹成对象,会覆盖前面userMsg对象中的属性,再拷贝到空对象中,实现整个对象的替换,返回的新对象赋值用来更新state