亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

什么時候應該使用 axios 進行異步調用,什么時候只使用 useEffect?

什么時候應該使用 axios 進行異步調用,什么時候只使用 useEffect?

絕地無雙 2023-09-28 16:13:32
我現在很困惑。學習js前端以及如何發出API請求。到目前為止,每當我進行 API 調用時,我總是使用一些可以讓我處理異步請求(axios或thunk)的東西。但現在我遇到了一個案例,我正在向我的 Firebase/Firestore 發出請求,并且在我觀看的 yt 視頻中,僅useEffect使用了該請求。沒有任何async/await,例如:useEffect(() => {  // snapshot - to check, if there is a change (like a new entry) in the database  db.collection('products').onSnapshot((snapshot) => {    setProducts(snapshot.docs.map((doc) => doc.data()));  });}, []);為什么是這樣?
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

在示例代碼片段中


useEffect(() => {

  // snapshot - to check, if there is a change (like a new entry) in the database

  db.collection("products").onSnapshot(snapshot => {

      setProducts(snapshot.docs.map(doc => doc.data()))

  })

}, []);

db.collection("products")管理自己的異步事件處理。當收到“快照”事件時,它會調用onSnapshot回調并更新狀態。沒有什么可以等待的,特別是因為沒有返回值。


您還應該注意,useEffect鉤子回調是 100%同步代碼,它們不能被標記async和await任何代碼調用。然而,他們可以調用async自己進行等待等的函數。


關于你標題中的問題

任何時候您想要從組件生命周期中發出任何副作用時,都可以使用useEffect掛鉤,例如控制臺日志記錄狀態、獲取數據、調度操作。這主要是因為函數式 React 組件的整個函數體都被視為純函數。with dependency 更類似于基于類的組件的、和生命周期方法。它們只是作為 React 組件生命周期的一部分被單獨調用。useEffectcomponentDidMountcomponentDidUpdatecomponentWillUnmount


每當您需要獲取數據時,請使用 、 或 或任何其他數據獲取axios代碼。fetch


查看完整回答
反對 回復 2023-09-28
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

  1. useEffect() - 它是一個鉤子,允許我們在功能組件(如網絡請求等)中執行副作用。

  2. Axios - 它只是一個庫,我們可以在其中發出 http 請求,例如 JavaScript 中的 fetch API,而且 axios 是基于 Promise 的。


查看完整回答
反對 回復 2023-09-28
  • 2 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號