如何使用setState更新对象中的状态

时间:2019-10-14 04:40:30

标签: javascript reactjs

我有一个处于状态的对象,在更改功能上,我想使用setState更新对象中的键值

this.state= {
  addOfficeObj: {
  name: ''

  }
}

 onOfficeChange(e){
   this.setState({addOfficeObj.name: e.target.value})
 }

onOfficeChange函数,我得到e.target.value作为“ siva” 我想将addOfficeObj.name更新为“ siva”

5 个答案:

答案 0 :(得分:0)

您应该这样做:

onOfficeChange(e){
   this.setState({addOfficeObj:{name: e.target.value}})
}

答案 1 :(得分:0)

您可以这样做:

onOfficeChange(e){
   this.setState({
     addOfficeObj: {
       name: e.target.value
     }
   })
 }

答案 2 :(得分:0)

尝试一下,这应该可行

onOfficeChange(e){
   let addOfficeObj= this.state.addOfficeObj;
   addOfficeObj.name = e.target.value;
   this.setState({
                    addOfficeObj
                })
 }

答案 3 :(得分:0)

您可以尝试一下。

onOfficeChange(e){
this.setState(prevState => {
  let addOfficeObj = Object.assign({}, prevState.name); 
  addOfficeObj.name = e.target.value; 
  return { addOfficeObj }; 
})
}

答案 4 :(得分:0)

仅对顶层进行浅表复制是不够的-还应复制nestedState对象。

this.state= {
  addOfficeObj: {
  name: ''
  }
}
onOfficeChange = (e) => {
 this.setState(prevState => ({
    addOfficeObj: {                   // object that we want to update
        ...prevState.addOfficeObj,    // keep all other key-value pairs
        name:  e.target.value         // update the value of specific key
     }
   }))
}

您可以使用传播算子以这种方式进行操作,并且不变性仍然存在(如果需要的话)