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 相关文章推荐
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
jQuery验证Checkbox是否选中的代码 推荐
Sep 04 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
Dec 10 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
详解适配器在JavaScript中的体现
Sep 28 Javascript
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
Apr 09 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
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
python微信公众号之关键词自动回复
2018/06/15 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
详解Django-channels 实现WebSocket实例
2019/08/22 Python
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
小学教师师德师风自我剖析材料
2014/09/29 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL