国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記錄--alova組件使用方法(區(qū)別axios)

這篇具有很好參考價值的文章主要介紹了記錄--alova組件使用方法(區(qū)別axios)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這里給大家分享我在網(wǎng)上總結(jié)出來的一些知識,希望對大家有所幫助

記錄--alova組件使用方法(區(qū)別axios)

在我們寫項目代碼時,應(yīng)該更加專注于業(yè)務(wù)邏輯的實現(xiàn),而把定式代碼交給js庫或工程化自動處理,而我想說的是,請求邏輯其實也是可以繼續(xù)簡化的。

你可能會說,用axios或fetch api就夠了啊,哪有什么請求邏輯,那可能是你還沒有意識到這個問題,作為一個前端開發(fā),你肯定也遇到過這些問題:

  • 處理分頁邏輯
  • 表單處理邏輯
  • 處理請求防抖邏輯
  • 處理輪詢檢查
  • 處理緩存處理
  • 處理加載狀態(tài)
  • 處理錯誤處理
  • 驗證碼發(fā)送
  • 文件上傳
  • ...

這些問題,如果你正在使用 axios 或 fetch api,你需要編寫大量的代碼來處理這些問題,但我想說,他們其實更多的也都是固定的模板代碼,也可以被精簡掉。

在今天你可以使用 alova 來處理它們,alova提供了大量日常業(yè)務(wù)中常用的請求模塊,你只需要簡單配置幾行代碼,alova 就能自動幫你管理請求狀態(tài),優(yōu)化網(wǎng)絡(luò)體驗,那些煩人的分頁邏輯、輪詢檢查、緩存處理,全都不用你操心了,讓你更加專注于業(yè)務(wù)邏輯。

alova的學(xué)習(xí)成本更低

alova 借鑒了 axios 和ahooks-useRequest的設(shè)計,讓大家更容易上手,學(xué)習(xí)成本更低。

alova 官網(wǎng)在這里。

alova 自從 2023 年 4 月份正式對外發(fā)布以來,在 Issues 和 Disscussion 中收到了來自世界各地的開發(fā)者積極參與的信息,深感榮幸。

如果你也喜歡 alovajs,請在Github 倉庫中貢獻(xiàn)一顆 star,這對我們非常重要。

有任何問題,你可以加入以下群聊咨詢,也可以在github 倉庫中發(fā)布 Discussions,如果遇到問題,也請在github 的 issues中提交,我們會在最快的時間解決。

  • 加入在 Discord 社區(qū)參與交流
  • 加入 QQ 頻道社區(qū)參與交流

下面我們來看看如何通過簡單配置,就能幫你解決各種復(fù)雜場景下的請求問題。

基礎(chǔ)請求

基本的請求,適用于初始化信息,自帶了請求相關(guān)的各種狀態(tài)。

以 vue3 為例。

<template>
  <div>
    <div v-if="loading">loading...</div>
    <div v-else-if="error">error: {{ error }}</div>
    <div v-else>
      <div>
        <span>id: {{ data.title }}</span>
        <span>title: {{ data.time }}</span>
      </div>
    </div>
  </div>
</template>

<script setup>
  import { useRequest } from "alova";

  // 和axios相似的參數(shù)風(fēng)格
  const todoDetail = alova.Get("/todo", {
    params: {
      id: 1,
    },
  });

  const {
    loading,
    data,
    error,
    onSuccess,
    onError,
    onComplete,
    send,
    abort,
    update,
  } = useRequest(todoDetail);
  onSuccess((event) => {
    console.log("success", event);
  });
  onError((event) => {
    console.log("error", event);
  });
  onComplete((event) => {
    console.log("complete", event);
  });
</script>

useRequest 會自動幫你管理 loading、data、error 等狀態(tài),不需要自己控制!

useRequest 詳細(xì)文檔

狀態(tài)變化請求

在數(shù)據(jù)篩選、搜索等交互中,可以通過 useWatcher 來監(jiān)聽狀態(tài)變化并發(fā)送請求,返回值也包含與 useRequest 相同的狀態(tài)、事件函數(shù)、操作函數(shù)。

useWatcher(() => filterTodoList(page, keyword), [keyword, page], {
  debounce: [500, 0], // 請求級的防抖參數(shù)
});

它還有請求防抖、保證請求時序、過濾狀態(tài)變化時是否發(fā)送請求等功能,超方便!

useWatcher 詳細(xì)文檔

預(yù)加載數(shù)據(jù)

可以用 useFetcher 預(yù)加載數(shù)據(jù),不需要直接處理響應(yīng),但會更新相關(guān)狀態(tài):

const { fetching, error, fetch } = useFetcher();
fetch(todoDetail);

useFetcher 詳細(xì)文檔

分頁請求

分頁場景下,page、pageSize、pageCount、total 等等好多狀態(tài)要自己維護(hù),還要寫一堆邏輯來判斷何時應(yīng)該發(fā)送請求!

如果用 alovajs 提供的分頁 Hook,你就只需要這樣:

const {
  // 加載狀態(tài)
  loading,

  // 列表數(shù)據(jù)
  data,

  // 是否為最后一頁
  // 下拉加載時可通過此參數(shù)判斷是否還需要加載
  isLastPage,

  // 當(dāng)前頁碼,改變此頁碼將自動觸發(fā)請求
  page,

  // 每頁數(shù)據(jù)條數(shù)
  pageSize,

  // 分頁頁數(shù)
  pageCount,

  // 總數(shù)據(jù)量
  total,
} = usePagination((page, pageSize) => queryStudents(page, pageSize));

// 翻到上一頁,page值更改后將自動發(fā)送請求
const handlePrevPage = () => {
  page.value--;
};

// 翻到下一頁,page值更改后將自動發(fā)送請求
const handleNextPage = () => {
  page.value++;
};

// 更改每頁數(shù)量,pageSize值更改后將自動發(fā)送請求
const handleSetPageSize = () => {
  pageSize.value = 20;
};

是不是清爽很多,節(jié)省了超多重復(fù)代碼。

usePagination 詳細(xì)文檔

表單提交

表單處理也很頭疼吧?alova 的 useForm 直接幫你搞定表單提交、表單草稿、自動重置表單項、多頁共享數(shù)據(jù)啥的。

const {
  form,
  send: submitForm,
  updateForm,
} = useForm((formData) => submitData(formData), {
  initialForm: {
    title: "",
    content: "",
    time: "",
  },
  resetAfterSubmiting: true,
});

useForm 詳細(xì)文檔

驗證碼實現(xiàn)

別再自己做倒計時了,這有!

const { loading: sending, send: sendCaptcha } = useCaptcha(
  () => sendCaptcha(mobile),
  {
    initialCountdown: 60,
  }
);

useCaptcha 詳細(xì)文檔

文件上傳策略

更簡單的文件上傳策略,支持對 base64、Blob、ArrayBuffer、Canvas 數(shù)據(jù)的自動識別和轉(zhuǎn)換,還可以多文件同時上傳、圖片預(yù)覽圖生成

const {
  fileList
  loading,
  progress
} = useUploader(({ file, name }) => uploadFile(file, name), {
  limit: 3,
  accept: ['png', 'jpg', 'gif'],
  imageTempLink: true
});

useUploader 詳細(xì)文檔

自動重新拉取數(shù)據(jù)

可以在瀏覽器 tab 切換時拉取最新數(shù)據(jù)、瀏覽器聚焦時拉取最新數(shù)據(jù)、網(wǎng)絡(luò)重連時拉取最新數(shù)據(jù)、輪詢請求自動重新拉取數(shù)據(jù),可以同時配置以上的一個或多個觸發(fā)條件,也可以配置節(jié)流時間來防止短時間內(nèi)觸發(fā)多次請求,例如 1 秒內(nèi)只允許觸發(fā)一次。

useAutoRequest(todoDetail, {
  enablePolling: 2000,
  enableVisibility: true,
  enableFocus: true,
  enableNetwork: true,
  throttle: 1000
}

useAutoRequest 詳細(xì)文檔

跨組件請求策略

跨組件或模塊觸發(fā)請求相關(guān)操作,消除組件層級的限制,在任意組件中快速地觸發(fā)任意請求的操作函數(shù),例如,你可以某個組件中更新了菜單數(shù)據(jù)后,重新觸發(fā)側(cè)邊菜單欄的重新請求,從而刷新數(shù)據(jù)。當(dāng)操作了列表數(shù)據(jù)后,觸發(fā)列表更新。

// 組件A創(chuàng)建代理
useRequest(todoDetail, {
  middleware: actionDelegationMiddleware("someAction"),
});

// 組件B內(nèi)觸發(fā)操作
accessAction("someAction", (actions) => {
  actions.send();
});

actionDelegationMiddleware 詳細(xì)文檔

請求重試策略

在重要的請求上使用它,可以提高請求的穩(wěn)定性,可以自定義設(shè)置是否重試,以及重試延遲,還有手動停止重試

const { onRetry, onFail, stop } = useRetriableRequest(pay, {
  retry(error) {
    return /network timeout/i.test(error.message);
  },
  backoff: {
    delay: 2000,
  },
});

useRetriableRequest 詳細(xì)文檔

SSE

可以直接通過 SSE 進(jìn)行請求,它可以通過全局響應(yīng)和方法實例的函數(shù) transformData 自動轉(zhuǎn)換數(shù)據(jù),還提供了對 EventSource 對象的全部控制。

const { readyState, data, eventSource, onMessage, onError, onOpen, on } =
  useSSE(() => chatGPT(), {
    withCredentials: true,
    interceptByGlobalResponded: true,
  });

useSSE 詳細(xì)文檔

本文轉(zhuǎn)載于:

https://juejin.cn/post/7301281320666693667

如果對您有所幫助,歡迎您點個關(guān)注,我會定時更新技術(shù)文檔,大家一起討論學(xué)習(xí),一起進(jìn)步。

?記錄--alova組件使用方法(區(qū)別axios)文章來源地址http://www.zghlxwxcb.cn/news/detail-746284.html

到了這里,關(guān)于記錄--alova組件使用方法(區(qū)別axios)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue3+ts+vite中封裝axios,使用方法從0到1

    vue3+ts+vite中封裝axios,使用方法從0到1

    http.ts文件內(nèi)容: methods.ts文件內(nèi)容: api/user.ts 用戶相關(guān)接口 types/user.d.ts定義接口ts類型 請求成功測試

    2024年02月02日
    瀏覽(18)
  • 【JavaScript】對象 ② ( 對象使用 | 調(diào)用對象屬性 | 調(diào)用對象方法 | 變量與屬性區(qū)別 | 函數(shù)與方法區(qū)別 )

    【JavaScript】對象 ② ( 對象使用 | 調(diào)用對象屬性 | 調(diào)用對象方法 | 變量與屬性區(qū)別 | 函數(shù)與方法區(qū)別 )

    使用字面量創(chuàng)建對象要點 : 在上一篇博客 【JavaScript】對象 ① ( 對象概念 | 對象使用場景 | 使用字面量創(chuàng)建對象 | 空對象字面量 | 小括號 / 中括號 / 大括號 作用 ) 中 , 介紹了 使用 字面量 創(chuàng)建對象 , 有如下要點 : 鍵值對 : 對象字面量 中的 屬性 和 方法 都是以 \\\" 鍵值對 \\\" 的形

    2024年04月14日
    瀏覽(26)
  • 什么是組件,以及前端各種框架組件的使用方法

    什么是組件,以及前端各種框架組件的使用方法

    ??博主:小貓娃來啦 ??文章核心: 介紹什么是組件,以及前端各種框架組件的使用方法 ?組件就像是搭積木一樣的東西,可以用來構(gòu)建軟件或者系統(tǒng)。每個組件都有自己獨立的功能和任務(wù),就像一個小小的部件。你可以把這些小部件組合在一起,形成一個完整的應(yīng)用程序

    2024年02月12日
    瀏覽(33)
  • U盤使用記錄刪除方法

    1:先在系統(tǒng)里添加環(huán)境變量“ devmgr_shownonpresent_devices ”值為“ 1 ” 2:打開設(shè)備管理器,然后查看隱藏設(shè)備,展開磁盤驅(qū)動器和儲存卷兩處,然后把跟U盤有關(guān)的刪除掉。 3:鼠標(biāo)單擊“我的電腦”右鍵選擇“管理”打開,然后把可移動存儲相關(guān)的信息刪除。 4: 把加入的系統(tǒng)

    2024年02月04日
    瀏覽(22)
  • Linux - tar命令使用方法記錄

    (存檔指tarball) -c, --create? ? ? ? ? ? ? ? ? ? ?創(chuàng)建新存檔 -x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?從存檔中提取文件 -z? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?通過gzip過濾存檔 -v? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?顯示詳情,詳細(xì)列出已處理文件 -f? ? ? ? ? ? ?

    2024年02月16日
    瀏覽(18)
  • python使用裝飾器記錄方法耗時

    python使用裝飾器記錄方法耗時

    python使用修飾器記錄方法耗時,目的是每當(dāng)方法執(zhí)行完后,可以記錄該方法耗時,而不需要在每個方法的執(zhí)行前后,去創(chuàng)建一個臨時變量,來記錄耗時。 方式一(不推薦): 在每個方法的執(zhí)行前后,去創(chuàng)建一個臨時變量,來記錄耗時,代碼如下,缺點在于,如果有10個、10

    2024年02月13日
    瀏覽(17)
  • vivado中ila的使用方法記錄

    vivado中ila的使用方法記錄

    在FPGA的開發(fā)中,當(dāng)完成代碼設(shè)計后,為了驗證代碼的準(zhǔn)確性和各種不同條件下的可靠性,往往需要優(yōu)先想到通過邏輯仿真進(jìn)行相關(guān)驗證。使用邏輯仿真進(jìn)行驗證雖然可以周密的考慮給出不同輸入條件下的輸出結(jié)果或交互結(jié)果,但是也其相對局限性:使用仿真需要設(shè)計人員寫

    2024年02月16日
    瀏覽(28)
  • vue3父組件使用ref調(diào)用子組件方法

    在vue2中,父組件通過ref調(diào)用子組件的方法只需要給子組件添加ref屬性,然后使用this.$refs.XXX.method即可 但是在vue3中,子組件需先使用defineExpose將方法暴露給父組件 調(diào)用方法如下: 1、使用getCurrentInstance 2、使用ref函數(shù)創(chuàng)建一個響應(yīng)式的引用,并將其綁定到子組件上

    2024年01月16日
    瀏覽(19)
  • 一文解釋python中的實例方法,類方法和靜態(tài)方法作用和區(qū)別是啥?該如何使用

    一文解釋python中的實例方法,類方法和靜態(tài)方法作用和區(qū)別是啥?該如何使用

    我們都知道 ,python類中有三種常見的方法 ,分別是實例方法 ,類方法和靜態(tài)方法 。那么這幾個方法到底有什么作用 ? 它們之間有什么區(qū)別 ?該如何使用 ? 帶著這些問題 ,下面我們就來了解下這三種方法 。 若我們要實現(xiàn)一個學(xué)生的類 ,里面要實現(xiàn)3功能,分別是: 功能

    2024年02月10日
    瀏覽(21)
  • uniapp組件庫SwipeAction 滑動操作 使用方法

    uniapp組件庫SwipeAction 滑動操作 使用方法

    目錄 #平臺差異說明 #基本使用 #修改按鈕樣式 #點擊事件 #API #Props #Event 該組件一般用于左滑喚出操作菜單的場景,用的最多的是左滑刪除操作。 注意 如果把該組件通過v-for用于左滑刪除的列表,請保證循環(huán)的 :key 是一個唯一值,可以用數(shù)據(jù)的id或者title替代。 不能是數(shù)組循環(huán)

    2024年01月22日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包