更新componentWillMount中的状态

时间:2019-08-22 07:42:43

标签: react-native

我想创建一个包含多个对象的对象。数据是这样的

dataList = [{inputFieldId: 1, dataField:{...}, data: '120'}, {inputFieldId: 2, dataField:{...}, data: '120'} ]

想要这样的东西。

res = [{1: '120'}, {2: '120'}]

我为此编写了一个代码,但是它只给了我最后的对象数据。

  constructor(){
  super()
  this.state = {
  inputValue:{},
  datalist = [],
  }
  }
  componentDidMount() {
  console.log(this.state.inputValue)
  this.props.navigation.setParams({ sendDataToServer: 
 this._sendDataToServer });
 }

   async componentWillMount(){
     for(var key in dataList){
        this.setState({
           inputValue: {
             ...this.state.inputValue,
             [dataList[key].inputFieldId]: dataList[key].data
          }
      })
  }     
}

code output = { 2: '120'}

预先感谢

1 个答案:

答案 0 :(得分:0)

setState异步工作。代替这个

this.setState({
  inputValue: {
    ...this.state.inputValue,
    [dataList[key].inputFieldId]: dataList[key].data
  }
})

尝试更改为此

this.setState((previousState) => ({
  inputValue: {
    ...previousState.inputValue,
    [dataList[key].inputFieldId]: dataList[key].data
  }
}))