關(guān)于Element Loading的全局使用(自定義Loading)
Element Loading的全局使用(自定義Loading)
方法一
寫在axios的配置中,在請求攔截器中調(diào)用,響應(yīng)攔截器里面關(guān)閉
import axios from 'axios'; import qs from 'qs'; import { Message, Loading } from 'element-ui'; import { getToken } from "@/utils/token.js"; const baseUrl=`http://157:8852`; const service = axios.create({ baseURL: baseUrl, timeout: 60000, }); service.defaults.headers["Content-Type"] = "application/json;charset=utf-8"; let loading = null; //定義loading變量 //開始 加載loading let startLoading = () => { loading = Loading.service({ lock: true, text: 'Loading', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.8)' }) } //結(jié)束 取消loading加載 let endLoading = () => { loading.close(); } let needLoadingRequestCount = 0 //聲明一個(gè)變量 let showFullScreenLoading = () => { if (needLoadingRequestCount === 0) { //當(dāng)?shù)扔?時(shí)證明第一次請求 這時(shí)開啟loading startLoading() } needLoadingRequestCount++ //全局變量值++ } let tryHideFullScreenLoading = () => { if (needLoadingRequestCount <= 0) return //小于等于0 證明沒有開啟loading 此時(shí)return needLoadingRequestCount-- //正常響應(yīng)后 全局變量 -- if (needLoadingRequestCount === 0) { //等于0 時(shí)證明全部加載完畢 此時(shí)結(jié)束loading 加載 endLoading(); } } // 請求攔截器 service.interceptors.request.use((config) => { if (getToken()) { config.headers["Authorization"] = getToken(); } if (config.url.indexOf('queryExecuteOnce') > -1) { console.log("1111", config.url); } else { //開啟loading加載 showFullScreenLoading(); } return config; }, (err) => { Message.error('請求失敗!'); return Promise.reject(err); }) // 響應(yīng)攔截器 service.interceptors.response.use((response) => { if (response.data.code == 302) { Message.warning('登錄超時(shí),請重新登錄!'); return; } //關(guān)閉loading加載 tryHideFullScreenLoading(); return response }, (err) => { tryHideFullScreenLoading(); if (err.toString().indexOf('Error: timeout') !== -1) { Message.warning('網(wǎng)絡(luò)請求超時(shí)!'); return Promise.reject(err); } else { Message.error('服務(wù)器響應(yīng)失敗,請稍后再試!'); return Promise.reject(err); } })
方法二
將自定義樣式寫在公共css中,在需要的文件里面進(jìn)行調(diào)用
代碼塊:
//公共css樣式 .svg-container .el-input__inner { padding-left: 40px; } .svg-container .flex { display: flex; align-items: center; height: 100%; } .el-loading-spinner .circular { display: none; } .el-loading-spinner { width: 100px; height: 100px; top: 50%; left: 50%; transform: translate(-50px, -50px); background: url("../assets/img/loading.png"); background-size: 100% 100%; margin-top: 0px; } .el-loading-mask { z-index: 9999 !important; }
//vue文件調(diào)用方法 handleClickOne() { const loading = this.$loading({ lock: true, text: "", spinner: "", background: "rgba(255, 255, 255, 0.8)", }); setTimeout(() => { loading.close(); }, 2000); },
方法三
封裝在utils公共方法中,在需要的頁面進(jìn)行調(diào)用
代碼塊:
import { Loading } from 'element-ui' let loadingCount = 0 let loading const startLoading = () => { loading = Loading.service({ lock: true, text: '查驗(yàn)中,請稍等……', background: 'rgba(0, 0, 0, 0.5)', color: '#fff', }) } const endLoading = () => { loading.close() } export const showLoading = () => { if (loadingCount === 0) { startLoading() } loadingCount += 1 } export const hideLoading = () => { if (loadingCount <= 0) { return } loadingCount -= 1 if (loadingCount === 0) { endLoading() } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
element UI 中的 el-tree 實(shí)現(xiàn) checkbox&n
在日常項(xiàng)目開發(fā)中,會(huì)經(jīng)常遇到,樹形結(jié)構(gòu)的查詢方式,為了快速方便開發(fā),常常會(huì)使用到快捷的ui組件去快速搭樹形結(jié)構(gòu),這里我用的是 element ui 中的 el-tree,對element UI 中的 el-tree 實(shí)現(xiàn) checkbox 單選框及 bus 傳遞參數(shù)的方法感興趣的朋友跟隨小編一起看看吧2022-09-09Vue3 Props沒有默認(rèn)值但報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Vue3 Props沒有默認(rèn)值但報(bào)錯(cuò)的解決方案,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說明
這篇文章主要介紹了Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的全過程
nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,因此常用來做靜態(tài)資源服務(wù)器和后端的反向代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-03-03vue如何實(shí)現(xiàn)跨頁面?zhèn)鬟f與接收數(shù)組并賦值
這篇文章主要介紹了vue如何實(shí)現(xiàn)跨頁面?zhèn)鬟f與接收數(shù)組并賦值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04