簡體   English   中英

setState 在本機反應中無法正常工作

[英]setState is not working properly in react native

我想用多個對象創建一個對象。 數據是這樣的

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

像這樣想要什么。

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

我為此編寫了一個代碼,但它只給了我最后一個對象數據。

  constructor(){
  super()
  this.state = {
  inputValue:{},
  datalist = [],
  }
  }


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

code output = { 2: '120'}

您可以嘗試如下代碼:

constructor(){
  super()
  this.state = {
    inputValue: {},
    datalist = [],
  }
}


async componentWillMount() {
  const inputValues = [];
  for(var key in dataList) {
    inputValues.push({[dataList[key].inputFieldId]: dataList[key].data});
  }
  this.setState({ inputValue: inputValues });
}

替換{}通過[]inputValue:{ ...this.state.inputValue,.....}[dataList[key].inputFieldId]: dataList[key].data{}如下

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

但是inputValue狀態應聲明為數組,例如:

this.state = {
inputValue: [],
datalist = [],
}

純JS中的示例

 let dataList = [{ inputFieldId: 1, dataField: {}, data: '120' }, { inputFieldId: 2, dataField: {}, data: '120' }] let inputValue = [] for (var key in dataList) { inputValue = [ ...inputValue, { [dataList[key].inputFieldId]: dataList[key].data } ] } console.log(inputValue) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM