我做
const user = this.state.user;
this.setState({
user: {
id
}
});
但我的其他财产已经消失了。曾经有过
user.name, user.gender
等。如何保留现有对象的副本并更新状态?使用lodash的克隆方法?
答案 0 :(得分:0)
你不需要lodash去做。尝试
let updatedUser = Object.assign({}, this.state.user, {
id
})
this.setState({
user: updatedUser
})
答案 1 :(得分:0)
您可以查看Object.assign来解决此问题。
但是,我建议您使用immutability-helper:
import update from 'immutability-helper';
const user = this.state.user;
const updatedUser = update(user, {
id: {$set: 7}
});
this.setState({user: updatedUser});
此处,$set
是update
函数为user.id
设置新值的命令。用户对象中的其余属性将保持不变。
虽然语法需要一点点习惯,但一旦理解它就会容易得多。对于简单的状态对象,Object.assign没问题。
但是,如果您的状态对象非常复杂和深入,克隆整个状态可能会影响性能。这是不变性助手帮助的地方。