在使用 react 中 setState() 修改 state 中的对象属性时,可以使用 Object.assign()
方法,完成对象的修改
public state = {
optionValue: 'all',
total: 10,
form: {
page: '1',
size: '10',
ref: '',
userName: '', // 现在是空值
},
}
// 自定义的监听输入框变化函数
public changeInput = (e) => {
// 获取输入框的内容
const value = e.target.value
// 使用 Object.assign() 完成对象合并
this.setState(() => ( Object.assign(this.state.form,{userName:value})))
// 打印结果
console.log(this.state);
}
打印结果
可以看到打印的结果已经合并到对象中,而对象中的其他值并未改变
另外搜到的使用 assign() 修改 setState 的其他格式写法
1.把得到的对象整个setState给了原来的对象
let data = Object.assign({}, this.state.data, { is_collect: false })
this.setState({
data: data
})
2
this.setState({
style: Object.assign({}, this.state.style, { width: 666})
})