vue + axios + element-ui 实现全局Loading(部分接口不要loading,多个请求合并一个loading)

导读:本篇文章讲解 vue + axios + element-ui 实现全局Loading(部分接口不要loading,多个请求合并一个loading),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

vue + axios + element-ui 实现全局Loading(部分接口不要loading,多个请求合并一个loading)

  1. loading.js
import { Loading } from 'element-ui'
let needLoadingRequestCount = 0
let loading

const startLoading = () => {
  loading = Loading.service({
    lock: true,
    text: '拼命加载中...', //可以自定义文字
    spinner: 'el-icon-loading', //自定义加载图标类名
    background: 'rgba(0, 0, 0, .3)' //遮罩层背景色
  })
}
function endLoading() {
  Vue.nextTick(function() {
    // DOM 更新了
    loading.close()
  })
}
export const showLoading = () => {
  if (needLoadingRequestCount === 0) {
    startLoading()
  }
  needLoadingRequestCount++
}

export const hideLoading = () => {
  setTimeout(tryCloseLoading, 300)
}

function tryCloseLoading() {
  if (needLoadingRequestCount <= 0) return
  needLoadingRequestCount--
  if (needLoadingRequestCount === 0) {
    endLoading()
  }
}
  1. 在 封装axios请求的地方引入loading.js
import { showLoading, hideLoading } from '@/util/loading'

// 请求拦截
axios.interceptors.request.use(
  config => {  
  // 这里是加loading的地方
    if (config.config.showLoading === true) {
      showLoading()
    }
    //..... 其他代码 
  },
  error => {
    hideLoading()
    return Promise.reject(error)
  }
  )
  
// 响应拦截
axios.interceptors.response.use(
  res => {
    hideLoading()
   //..... 其他代码 
  },
  error => {
    hideLoading()
    //..... 其他代码 
  }
)

//* 封装post请求 (默认都加上loading)
export function post(url, data = {}, config = { showLoading: true }) {
  return new Promise((resolve, reject) => {
    axios({
      url,
      method: 'post',
      data,
      config
    }).then(
      response => {
        resolve(response.data)
      },
      err => {
        reject(err)
      }
    )
  })
}
  1. 当请求不想要带loading时:
    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/64810.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!