關(guān)于Element Loading的全局使用(自定義Loading)
Element Loading的全局使用(自定義Loading)
方法一
寫在axios的配置中,在請(qǐng)求攔截器中調(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變量
//開(kāi)始 加載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í)證明第一次請(qǐng)求 這時(shí)開(kāi)啟loading
startLoading()
}
needLoadingRequestCount++ //全局變量值++
}
let tryHideFullScreenLoading = () => {
if (needLoadingRequestCount <= 0) return //小于等于0 證明沒(méi)有開(kāi)啟loading 此時(shí)return
needLoadingRequestCount-- //正常響應(yīng)后 全局變量 --
if (needLoadingRequestCount === 0) { //等于0 時(shí)證明全部加載完畢 此時(shí)結(jié)束loading 加載
endLoading();
}
}
// 請(qǐng)求攔截器
service.interceptors.request.use((config) => {
if (getToken()) {
config.headers["Authorization"] = getToken();
}
if (config.url.indexOf('queryExecuteOnce') > -1) {
console.log("1111", config.url);
} else {
//開(kāi)啟loading加載
showFullScreenLoading();
}
return config;
}, (err) => {
Message.error('請(qǐng)求失敗!');
return Promise.reject(err);
})
// 響應(yīng)攔截器
service.interceptors.response.use((response) => {
if (response.data.code == 302) {
Message.warning('登錄超時(shí),請(qǐng)重新登錄!');
return;
}
//關(guān)閉loading加載
tryHideFullScreenLoading();
return response
}, (err) => {
tryHideFullScreenLoading();
if (err.toString().indexOf('Error: timeout') !== -1) {
Message.warning('網(wǎng)絡(luò)請(qǐng)求超時(shí)!');
return Promise.reject(err);
} else {
Message.error('服務(wù)器響應(yīng)失敗,請(qǐ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公共方法中,在需要的頁(yè)面進(jìn)行調(diào)用


代碼塊:
import { Loading } from 'element-ui'
let loadingCount = 0
let loading
const startLoading = () => {
loading = Loading.service({
lock: true,
text: '查驗(yàn)中,請(qǐng)稍等……',
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)目開(kāi)發(fā)中,會(huì)經(jīng)常遇到,樹(shù)形結(jié)構(gòu)的查詢方式,為了快速方便開(kāi)發(fā),常常會(huì)使用到快捷的ui組件去快速搭樹(shù)形結(jié)構(gòu),這里我用的是 element ui 中的 el-tree,對(duì)element UI 中的 el-tree 實(shí)現(xiàn) checkbox 單選框及 bus 傳遞參數(shù)的方法感興趣的朋友跟隨小編一起看看吧2022-09-09
Vue3 Props沒(méi)有默認(rèn)值但報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Vue3 Props沒(méi)有默認(rèn)值但報(bào)錯(cuò)的解決方案,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-04-04
Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說(shuō)明
這篇文章主要介紹了Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
vue spa應(yīng)用中的路由緩存問(wèn)題與解決方案
這篇文章主要介紹了vue spa應(yīng)用中的路由緩存問(wèn)題與解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
在vue2.0中引用element-ui組件庫(kù)的方法
這篇文章主要介紹了在vue2.0中引用element-ui組件庫(kù),需要的朋友可以參考下2018-06-06
Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的全過(guò)程
nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,因此常用來(lái)做靜態(tài)資源服務(wù)器和后端的反向代理服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下使用nginx部署vue2項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2023-03-03
vue如何實(shí)現(xiàn)跨頁(yè)面?zhèn)鬟f與接收數(shù)組并賦值
這篇文章主要介紹了vue如何實(shí)現(xiàn)跨頁(yè)面?zhèn)鬟f與接收數(shù)組并賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

