![](/img/trans.png)
[英]How to use Async Await Inside React's useEffect() Hook
[英]how to await axios call within .map that is inside of useEffect React
在我的useEffect
钩子内部,我试图调用.map
内部的 api 请求,但函数的其余部分不等待响应。 我已经尝试使.map
async
,但是函数的其余部分返回Promises
这样做的正确方法是什么,以便可以调用我的 api 请求,然后继续执行其余代码?
const getData = async (id) => {
const myData = await api.get(
'/api/request/id'
);
return myData;
};
useEffect(() => {
const myData = sampleData.map((item)
getData(item.id).then((response) => {
console.log(response.data.data);
return response.data.data
})
const myThings = myItem.things.map((thing) => {
if (thing.type === 'sampleType1') {
return [thing.name, thing.value];
} else (thing.type === 'sampleType2') {
return [
thing.name,
thing.content.name,
];
}
});
setData = {myThings, myData}
}, []);
在映射它们之前,您将希望等待所有这些承诺解决,所以这是Promise.all
的一个很好的用例:
useEffect(() => {
async function fetchData() {
const myData = await Promise.all(sampleData.map((item) =>
getData(item.id).then((response) => {
console.log(response.data.data);
return response.data.data
}));
const myThings = myItem.things.map((thing) => {
if (thing.type === 'sampleType1') {
return [thing.name, thing.value];
} else (thing.type === 'sampleType2') {
return [
thing.name,
thing.content.name,
];
}
});
setData = {myThings, myData}
}
fetchData();
}, []);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.