【发布时间】:2019-05-12 18:21:27
【问题描述】:
我有一个状态对象,它基本上是一个对象数组。我正在做一个 fetch 调用,它返回的对象数组应该设置为 state 对象。但我不能这样做。 有什么选择吗? 我哪里错了?
我们将不胜感激
this.state = {
accounts: [{firstname:"",lastname:"",age:"",id:""}],
};
async componentDidMount(){
let useraccounts = await this.fetchAccounts();
if(useraccounts.length > 0)
{
for(let i=0;i<useraccounts.length;i++)
{
account = {firstname:useraccounts[i].firstname,lastname:useraccounts[i].lastname,age:useraccounts[i].age,id:useraccounts[i].id};
this.setState((prevState) => ({ accounts: [ ...prevState.accounts, account ]}));
}
}
}
fetchAccounts = async() => {
//fetch API call which will return all users accounts
}
【问题讨论】:
-
首先在循环中准备数组,然后只执行一次 setState。像这样:
let arr = []; for(let i=0;i<useraccounts.length;i++) { account = { firstname:useraccounts[i].firstname, lastname:useraccounts[i].lastname, age:useraccounts[i].age,id:useraccounts[i].id }; arr.push(account); } this.setState((prevState) => ({ accounts: [ ...prevState.accounts, arr ]}));
标签: reactjs typescript setstate