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中关于indexOf的使用方法与问题小结
Aug 05 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
js编码、解码函数介绍及其使用示例
Sep 05 Javascript
JQuery弹出层示例可自定义
May 19 Javascript
微信小程序 for 循环详解
Oct 09 Javascript
关于Jquery中的事件绑定总结
Oct 26 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
Dec 25 Javascript
tab栏切换原理
Mar 22 Javascript
Centos6.8下Node.js安装教程
May 12 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
Jul 31 Javascript
vue中监听路由参数的变化及方法
Dec 06 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 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
调整PHP的性能
2013/10/30 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
javascript 面向对象的JavaScript类
2010/05/04 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
javascript 实现map集合
2015/04/03 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python爬虫基本知识
2018/03/05 Python
浅谈django orm 优化
2018/08/18 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
python 实现超级玛丽游戏
2020/11/25 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
学校门卫岗位职责
2014/03/16 职场文书
房产授权委托书范本
2014/09/22 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
计划生育责任书
2015/05/09 职场文书