const user = this.state.user;
this.setState({
user: {
id
}
});
,但我的其他性能也沒有了。它曾經有
user.name, user.gender
等。我如何保留現有對象的副本並更新狀態?使用lodash的克隆方法?
const user = this.state.user;
this.setState({
user: {
id
}
});
,但我的其他性能也沒有了。它曾經有
user.name, user.gender
等。我如何保留現有對象的副本並更新狀態?使用lodash的克隆方法?
你不需要lodash來做到這一點。嘗試
let updatedUser = Object.assign({}, this.state.user, {
id
})
this.setState({
user: updatedUser
})
你可以看看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很好。但是,如果您的狀態對象非常複雜且深入,則克隆整個狀態可能會影響性能。這是不變性幫手幫助的地方。