elementUI中loading组件的完美使用
程序员文章站
2022-06-07 22:46:49
...
有时候,网页数据请求太慢,在未得到数据的那一会会,时常会让心急的人怀疑是不是代码哪崩了,所以我需要一个东西来缓冲一下我等待的焦虑,在页面加载时添加一个加载动画
首先安装element-ui框架
npm i elemnt-ui -S
在main.js中引入
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
新建loading.js , 封装loading组件
import { Loading } from 'element-ui';
let loadingCount = 0;
let loading;
const startLoading = () => {
loading = Loading.service({
lock: true,
text: '拼命加载中...',//可以自定义文字
spinner:'el-icon-loading',//自定义加载图标类名
background: 'rgba(0, 0, 0, 0.7)'//遮罩层背景色
});
};
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();
}
};
封装完,就可以在你想使用的地方调用它啦,比如我是用在axios封装里了,每一个发送请求的时候调用他,请求结束获取到数据的时候,关闭他,就很完美啦
import axios from 'axios'
import qs from 'qs'
import {MessageBox} from 'element-ui'
import { showLoading, hideLoading } from './loading';
import router from "../router.js";
axios.defaults.withCredentials = true; //让ajax携带cookie
axios.defaults.headers.common['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
export default function ajax(url, data = {}, type = 'GET') {
showLoading()//显示加载中
return new Promise(function(resolve, reject) {
// 执行异步ajax请求
let promise
if (type === 'GET') {
...数据处理
// 发送get请求
promise = axios.get(url, data)
} else {
// 发送post请求
promise = axios.post(url, qs.stringify(data))
}
promise.then(function(response) {
hideLoading()//关闭加载
// 成功了调用resolve()
resolve(response.data)
if (response.data.status != 'success') {c
MessageBox.alert(response.data.msg, '错误提示', {
confirmButtonText: '确定',
type: 'error'
});
}
}).catch(function(error) {
hideLoading()//关闭加载
//失败了调用reject()
reject(error)
})
})
}
推荐阅读
-
微信小程序 image组件binderror使用例子与js中的onerror区别
-
vue中的router-view组件的使用教程
-
在vue-cli中使用layer中的layData日期组件
-
微信小程序 image组件binderror使用例子与js中的onerror区别
-
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
-
.NET中开源文档操作组件DocX的介绍与使用
-
Iview Table组件中各种组件扩展的使用
-
Android开发中button按钮的使用及动态添加组件方法示例
-
vue中组件的3种使用方式详解
-
Mysql5.7中使用group concat函数数据被截断的问题完美解决方法