React Native:当更新状态中的一个项目时,我是否需要`... this.state`

时间:2018-04-03 06:35:42

标签: react-native state setstate

在本机反应中,当我希望更新状态字典中一个项目的值时,我就是这样做的:

this.setState({
    showFullImage: true,
})

但是我的团队中的一些开发人员会像这样添加...this.state

this.setState({
    ...this.state,
    showFullImage: true,
})

对我来说这是错误的,因为它会更新依赖于状态的所有东西。包括任何可能不需要更新的内容。我的方法(第一个)一直在努力,并没有从状态中删除所有其他值......我错了吗?

2 个答案:

答案 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
    })
}