我们如何部分更新反应中的状态?

How do we partially update a state in react?

我想知道在 React/React-Native 中部分更新组件状态的最佳方法是什么。除了我可以创建一个函数,该函数采用当前状态并创建一个新状态并合并新的 {key:value} 和先前的状态。例如:

{
      dataStream:[//having data here], 
      formData: {
         'first_name': 'Richard',
         'last_name' : 'Barbieri',
      } 
}

我想将 last_name 更新为另一个值。当我打电话 this.setState(formData:{{'last_name':newValue}}),它将 formData 字典重置为姓氏:新值。有没有有效的方法?

我认为您可以尝试以下两种方法:

  1. 展开运算符

喜欢

this.setState({
    formData: {
        ...this.state.formData, 
        "last_name" : newValue 
    } 
});

  1. 获取当前状态的 first_name 并重新应用它:

喜欢

this.setState({ 
    formData: { 
        "first_name": this.state.formData.first_name, 
        "last_name" : newValue 
    } 
})

我不太确定第一个,但我认为第二个应该可以。

发生这种情况是正常的,因为您重新分配了整个 forData。

如果您想向现有表单数据添加一些内容,请执行类似的操作(还有很多其他解决方案 ^^)

this.setState({
    formData: Object.assign(this.state.formData, { 'last_name': newValue } 
})