vue+axios+element ui 实现全局loading加载示例


Posted in Javascript onSeptember 11, 2018

实现全局loading加载

分析需求,我们只需要在请求发起的时候开始loading,响应结束的时候关闭loading,就这么简单 对不对?

import axios from 'axios';

import { Message, Loading } from 'element-ui';

import Cookies from 'js-cookie';

import router from '@/router/index'

let loading  //定义loading变量

function startLoading() { //使用Element loading-start 方法
 loading = Loading.service({
  lock: true,
  text: '加载中……',
  background: 'rgba(0, 0, 0, 0.7)'
 })
}
function endLoading() { //使用Element loading-close 方法
 loading.close()
}
//那么 showFullScreenLoading() tryHideFullScreenLoading() 要干的事儿就是将同一时刻的请求合并。
//声明一个变量 needLoadingRequestCount,每次调用showFullScreenLoading方法 needLoadingRequestCount + 1。
//调用tryHideFullScreenLoading()方法,needLoadingRequestCount - 1。needLoadingRequestCount为 0 时,结束 loading。
let needLoadingRequestCount = 0
export function showFullScreenLoading() {
 if (needLoadingRequestCount === 0) {
  startLoading()
 }
 needLoadingRequestCount++
}

export function tryHideFullScreenLoading() {
 if (needLoadingRequestCount <= 0) return
 needLoadingRequestCount--
 if (needLoadingRequestCount === 0) {
  endLoading()
 }
}

//http request 拦截器
axios.interceptors.request.use(
 config => {
  var token = ''
  if(typeof Cookies.get('user') === 'undefined'){
   //此时为空
  }else {
   token = JSON.parse(Cookies.get('user')).token
  }//注意使用的时候需要引入cookie方法,推荐js-cookie
  config.data = JSON.stringify(config.data);
  config.headers = {
   'Content-Type':'application/json'
  }
  if(token != ''){
   config.headers.token = token;
  }
  showFullScreenLoading()
  return config;
 },
 error => {
  return Promise.reject(err);
 }
);


//http response 拦截器
axios.interceptors.response.use(
 response => {
  //当返回信息为未登录或者登录失效的时候重定向为登录页面
  if(response.data.code == 'W_100004' || response.data.message == '用户未登录或登录超时,请登录!'){
   router.push({
    path:"/",
    querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
   })
  }
  tryHideFullScreenLoading()
  return response;
 },
 error => {
  return Promise.reject(error)
 }
)

以上这篇vue+axios+element ui 实现全局loading加载示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript Math ceil()、floor()、round()三个函数的区别
Mar 09 Javascript
jQuery的学习步骤
Feb 23 Javascript
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
jquery删除ID为sNews的tr元素的内容
Apr 10 Javascript
jQuery操作属性和样式详解
Apr 13 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
Aug 18 Javascript
Webpack之tree-starking 解析
Sep 11 #Javascript
node.js之基础加密算法模块crypto详解
Sep 11 #Javascript
Vue在页面数据渲染完成之后的调用方法
Sep 11 #Javascript
浅谈Webpack核心模块tapable解析
Sep 11 #Javascript
原生js检测页面加载完毕的实例
Sep 11 #Javascript
vue props传值失败 输出undefined的解决方法
Sep 11 #Javascript
解决vue props 拿不到值的问题
Sep 11 #Javascript
You might like
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
vue数字类型过滤器的示例代码
2017/09/07 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python中requests模块的使用方法
2015/04/08 Python
Python中字符串对齐方法介绍
2015/05/21 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python opencv进行图像拼接
2020/03/27 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
企业厂长岗位职责
2013/12/17 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
公司领导班子对照材料
2014/08/18 职场文书
小学班级特色活动方案
2014/08/31 职场文书
护士求职自荐信范文
2015/03/04 职场文书
Vue如何清空对象
2022/03/03 Vue.js