2 回答
![?](http://img1.sycdn.imooc.com/545863080001255902200220-100-100.jpg)
TA贡献1805条经验 获得超10个赞
useEffect 是一个异步函数,因此您只需将调用移动到一个 useEffect 函数中,然后同步调用您的 api。我会将它移到一个单独的函数中,并使用 async/await 同步运行您的 api 调用。然后在 useEffect 函数中调用该函数,如下所示:
useEffect(() => {
getData();
},[]);
const getData = async () => {
try{
const session = await axios.get(`your first call here`);
const champions = await axios.get(`your second call here`);
setSession(session.yourData);
setChampions(champions.yourData);
}catch(err){
console.log(err);
}
}
如果您有第二个使用的第一个 api 调用的数据,那么您不需要将其设置为任何状态对象,您可以直接在第二个 api 调用中使用它。
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
TA贡献1780条经验 获得超5个赞
const [session, setSession] = useState("");
const [champions, setChampions] = useState([]);
useEffect(() => {
try{
const session = await axios.get(`http://api.paladins.com/paladinsapi.svc/createsessionJson/${devId}/${generateSignature('createsession')}/${moment.utc().format('YYYYMMDDHHmmss')}`);
setSession(session.session_id);
const champions = await axios.get(`http://api.paladins.com/paladinsapi.svc/getchampionsJson/${devId}/${generateSignature('getchampions')}/${session.session_id}/${moment.utc().format('YYYYMMDDHHmmss')}/1`);
setChampions(champions );
}
catch(err){
console.log(err);
}
}, [])
添加回答
举报