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 相关文章推荐
List Installed Software Features
Jun 11 Javascript
javascript判断机器是否联网的2种方法
Aug 09 Javascript
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
JS实现简单的图书馆享元模式实例
Jun 30 Javascript
Canvas实现放射线动画效果
Feb 15 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
jquery.pagination.js分页使用教程
Oct 23 jQuery
vue中axios实现数据交互与跨域问题
May 12 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
Sep 18 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 Javascript
vue中实现动态生成二维码的方法
Feb 21 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 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
5.PHP的其他功能
2006/10/09 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
javascript中Function类型详解
2015/04/28 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
python实现apahce网站日志分析示例
2014/04/02 Python
Python的pycurl包用法简介
2015/11/13 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
python的slice notation的特殊用法详解
2019/12/27 Python
python 安装impala包步骤
2020/03/28 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
学校志愿者活动总结
2014/06/27 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书