第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

代碼塊在 api 調(diào)用獲得響應(yīng)之前運行

代碼塊在 api 調(diào)用獲得響應(yīng)之前運行

繁星點點滴滴 2021-11-18 20:36:46
第二個 useEffect 塊在第一個收到任何數(shù)據(jù)之前運行。這會導(dǎo)致第二個塊返回一個錯誤和一個空數(shù)組。我試過使用 async/await,因為這在過去為我解決了這樣的問題。但是,它似乎在這里沒有影響。    const [session, setSession] = useState("");    const [champions, setChampions] = useState([]);    useEffect(() => {        axios.get(`http://api.paladins.com/paladinsapi.svc/createsessionJson/${devId}/${generateSignature('createsession')}/${moment.utc().format('YYYYMMDDHHmmss')}`).then((response) => {            setSession(response.data.session_id);            console.log(session);        }).catch((error) => {            console.log(error);        })    }, [])    useEffect(() => {        axios.get(`http://api.paladins.com/paladinsapi.svc/getchampionsJson/${devId}/${generateSignature('getchampions')}/${session}/${moment.utc().format('YYYYMMDDHHmmss')}/1`).then((response) => {            setChampions(response.data);            console.log(champions);        }).catch((error) => {            console.log(error);        })    }, []);它應(yīng)該向冠軍返回一個對象數(shù)組,但由于它沒有收到會話 ID,因此 api 調(diào)用不是將冠軍保持為空數(shù)組的正確地址。
查看完整描述

2 回答

?
holdtom

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)用中使用它。


查看完整回答
反對 回復(fù) 2021-11-18
?
翻閱古今

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);

     }

}, [])


查看完整回答
反對 回復(fù) 2021-11-18
  • 2 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號