【发布时间】:2021-03-10 19:08:02
【问题描述】:
我正在使用 fetch API 从 API 中获取数据。
获取结果后,我想将 setState 设置为不工作的结果
这是获取结果的函数
export const random = (min, max) => Math.floor(Math.random() * (max - min)) + min;
export const getPokemons = async function () {
const pokemon = [];
for (let i = 0; i < 5; i++) {
pokemon.push(fetch(`https://pokeapi.co/api/v2/pokemon/${random(1, 800)}`));
}
return Promise.all(pokemon)
.then((data) => {
const parsedData = [];
data.forEach(async (d) => {
const resJson = await d.json()
parsedData.push(resJson);
});
return parsedData
})
.catch((err) => {
console.log(err);
});
};
导入的代码
const [stats,setStats] = useState([])
useEffect(()=>{
generateTrio()
},[])
async function generateTrio() {
const gTrio = await getPokemons();
setStats(gTrio)
console.log(stats,gTrio)
}
stats 这里是一个空数组,而 gTrio 是必需的结果我想在 setStats 中
【问题讨论】:
-
在调用
setStats()之后不要登录stats,只需使用stats来渲染你的元素,它就会像你期望的那样工作。 -
@PatrickRoberts 我确信即使在调用
setState之后它也是一个空数组。 link to codesanbbox
标签: reactjs async-await react-hooks fetch-api