最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3網(wǎng)絡(luò)請求添加loading過程

 更新時(shí)間:2024年08月27日 14:35:27   作者:Time202051  
這篇文章主要介紹了vue3網(wǎng)絡(luò)請求添加loading過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3網(wǎng)絡(luò)請求添加loading

全局添加

import axios from 'axios'
import { ElLoading } from 'element-plus'

let loadingRequestCount = 0
let loadingInstance
const showLoading = () => {
  if (loadingRequestCount === 0) {
    loadingInstance = ElLoading.service({ target: '#app' })
  }
  loadingRequestCount += 1
}
const hideLoading = () => {
  if (loadingRequestCount <= 0) return
  loadingRequestCount -= 1
  if (loadingRequestCount === 0) {
    // nextTick(() => {
    loadingInstance.close()
    // })
  }
}

const service = axios.create({
  // baseURL: process.env.BASE_API,
  baseURL: 'http://localhost:4500',
  timeout: 3 * 1000
})

// 請求攔截器
service.interceptors.request.use(
  (config) => {
    showLoading()
    return config
  },
  (error) => {
    Promise.reject(error)
  }
)
service.interceptors.response.use(
  (res) => {
    hideLoading()
  },
  (error) => {
    hideLoading()
  }
)
export default service
ElLoading.service({ target: ‘#app' })

target添加類名就是為某個(gè)類名添加loading。全局就是#app

局部添加

或者 按鈕直接添加

let loadingInstance: any
// 添加loading
loadingInstance = ElLoading.service({ target: '.container_box' })
// 關(guān)閉laoding
loadingInstance.close()

vue優(yōu)化:添加請求loading效果

目標(biāo):統(tǒng)一在每次請求后臺時(shí),添加 loading 效果

背景:有時(shí)候因?yàn)榫W(wǎng)絡(luò)原因,一次請求的結(jié)果可能需要一段時(shí)間后才能回來, 此時(shí),需要給用戶 添加 loading 提示。

添加 loading 提示的好處:

  • 節(jié)流處理:防止用戶在一次請求還沒回來之前,多次進(jìn)行點(diǎn)擊,發(fā)送無效請求
  • 友好提示:告知用戶,目前是在加載中,請耐心等待,用戶體驗(yàn)會更好

實(shí)操步驟

1.請求攔截器中,每次請求,打開 loading

// 自定義配置 - 請求/響應(yīng) 攔截器
// 添加請求攔截器
instance.interceptors.request.use(function (config) {
  // 在發(fā)送請求之前做些什么
  // 開啟loading,禁止背景點(diǎn)擊 (節(jié)流處理,防止多次無效觸發(fā))
  Toast.loading({
    message: '加載中...',
    forbidClick: true, // 禁止背景點(diǎn)擊
    loadingType: 'spinner', // 配置loading圖標(biāo)
    duration: 0 // 不會自動消失
  })

  // 只要有token,就在請求時(shí)攜帶,便于請求需要授權(quán)的接口
  const token = store.getters.token
  if (token) {
    config.headers['Access-Token'] = token
    config.headers.platform = 'H5'
  }

  return config
}, function (error) {
  // 對請求錯(cuò)誤做些什么
  return Promise.reject(error)
})
  • 2.響應(yīng)攔截器中,每次響應(yīng),關(guān)閉 loading
  • 3.請求時(shí),打開 loading
// 添加響應(yīng)攔截器
instance.interceptors.response.use(function (response) {
  // 2xx 范圍內(nèi)的狀態(tài)碼都會觸發(fā)該函數(shù)。
  // 對響應(yīng)數(shù)據(jù)做點(diǎn)什么 (默認(rèn)axios會多包裝一層data,需要響應(yīng)攔截器中處理一下)
  const res = response.data
  if (res.status !== 200) {
    // 給錯(cuò)誤提示, Toast 默認(rèn)是單例模式,后面的 Toast調(diào)用了,會將前一個(gè) Toast 效果覆蓋
    // 同時(shí)只能存在一個(gè) Toast
    Toast(res.message)
    // 拋出一個(gè)錯(cuò)誤的promise
    return Promise.reject(res.message)
  } else {
    // 正確情況,直接走業(yè)務(wù)核心邏輯,清除loading效果
    Toast.clear()
  }
  return res
}, function (error) {
  // 超出 2xx 范圍的狀態(tài)碼都會觸發(fā)該函數(shù)。
  // 對響應(yīng)錯(cuò)誤做點(diǎn)什么
  return Promise.reject(error)
})

如果需要多個(gè)Toast,則需要配置,但一般不用

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue組件通信的多種方法詳解

    vue組件通信的多種方法詳解

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • vue實(shí)現(xiàn)自定義日期組件功能的實(shí)例代碼

    vue實(shí)現(xiàn)自定義日期組件功能的實(shí)例代碼

    這篇文章主要介紹了vue自定義日期組件的實(shí)現(xiàn)代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 如何在Vue項(xiàng)目中應(yīng)用TypeScript類

    如何在Vue項(xiàng)目中應(yīng)用TypeScript類

    與如何在React項(xiàng)目中應(yīng)用TypeScript類類似在VUE項(xiàng)目中應(yīng)用typescript,我們需要引入一個(gè)庫vue-property-decorator,需要的小伙伴可續(xù)看下文具體介紹
    2021-09-09
  • Element-ui中元素滾動時(shí)el-option超出元素區(qū)域的問題

    Element-ui中元素滾動時(shí)el-option超出元素區(qū)域的問題

    這篇文章主要介紹了Element-ui中元素滾動時(shí)el-option超出元素區(qū)域的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue2.0 keep-alive最佳實(shí)踐

    vue2.0 keep-alive最佳實(shí)踐

    這篇文章主要為大家詳細(xì)介紹了vue2.0 keep-alive的最佳實(shí)踐,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vite配置路徑別名的簡單實(shí)現(xiàn)方法

    Vite配置路徑別名的簡單實(shí)現(xiàn)方法

    Vite項(xiàng)目中我們可以手動將src路徑設(shè)置**@**路徑別名,可以省下很多引入路徑的冗余路徑,下面這篇文章主要給大家介紹了關(guān)于Vite配置路徑別名的簡單實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-04-04
  • 詳解實(shí)現(xiàn)vue的數(shù)據(jù)響應(yīng)式原理

    詳解實(shí)現(xiàn)vue的數(shù)據(jù)響應(yīng)式原理

    這篇文章主要介紹了詳解實(shí)現(xiàn)vue的數(shù)據(jù)響應(yīng)式原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • vue router返回到指定的路由的場景分析

    vue router返回到指定的路由的場景分析

    這篇文章主要介紹了vue router返回到指定的路由的場景分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 在Vue項(xiàng)目中取消ESLint代碼檢測的步驟講解

    在Vue項(xiàng)目中取消ESLint代碼檢測的步驟講解

    今天小編就為大家分享一篇關(guān)于在Vue項(xiàng)目中取消ESLint代碼檢測的步驟講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • vue3項(xiàng)目中使用three.js的操作步驟

    vue3項(xiàng)目中使用three.js的操作步驟

    最近在學(xué)習(xí)Three.js相關(guān)的技術(shù),恰逢Vue 3.0正式版也已推出,下面這篇文章主要給大家介紹了關(guān)于vue3項(xiàng)目中使用three.js的操作步驟,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01

最新評論

柘荣县| 建水县| 东乌珠穆沁旗| 察哈| 阿坝县| 东兰县| 永仁县| 克山县| 灵宝市| 平凉市| 临江市| 宁陵县| 巨野县| 东方市| 大姚县| 西充县| 河北区| 阿勒泰市| 滨州市| 闽侯县| 凯里市| 县级市| 乌拉特后旗| 七台河市| 长子县| 苏尼特左旗| 顺平县| 改则县| 喀什市| 河北区| 汕头市| 德清县| 内丘县| 宜川县| 江永县| 怀安县| 商水县| 昌平区| 九龙县| 河间市| 正阳县|