在本机反应中,当我希望更新状态字典中一个项目的值时,我就是这样做的:
this.setState({
showFullImage: true,
})
但是我的团队中的一些开发人员会像这样添加...this.state
:
this.setState({
...this.state,
showFullImage: true,
})
对我来说这是错误的,因为它会更新依赖于状态的所有东西。包括任何可能不需要更新的内容。我的方法(第一个)一直在努力,并没有从状态中删除所有其他值......我错了吗?
答案 0 :(得分:1)
你说得对,没有必要展开你没有更新的州的部分。仅更新需要更新的内容。
答案 1 :(得分:0)
setState
方法更新状态值。它只更新选定的键。因此,如果要更新状态的单个属性,可以直接更新。
如果要更新子级别的单个属性而不是...
,例如。
this.state = {
showImage: true,
user: {
name: 'test',
age: 10
}
}
updateName(name) {
const { user } = this.state
this.setState({
user: {
...user,
name
}
})
}
toggleImage() {
const { showImage } = this.state
this.setState({
showImage: !showImage
})
}