2 回答

TA貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊
useEffect 是一個異步函數(shù),因此您只需將調(diào)用移動到一個 useEffect 函數(shù)中,然后同步調(diào)用您的 api。我會將它移到一個單獨的函數(shù)中,并使用 async/await 同步運行您的 api 調(diào)用。然后在 useEffect 函數(shù)中調(diào)用該函數(shù),如下所示:
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 調(diào)用的數(shù)據(jù),那么您不需要將其設(shè)置為任何狀態(tài)對象,您可以直接在第二個 api 調(diào)用中使用它。

TA貢獻(xiàn)1780條經(jīng)驗 獲得超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);
}
}, [])
添加回答
舉報