[英]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.