Element-ui--loading+网络请求

在进行网络请求时,通常不希望用户对界面进行交互,并且提示用户客户端正在网络请求。所以需要有一个东西来阻止交互并且提示用户正在请求网络。于是乎有了以下玩意。。。

我的目录结构:

Element-ui--loading+网络请求_第1张图片

1.安装element-ui

cnpm i element-ui -S

2.在main.js中引用elementui

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

3.封装loading

首先创建一个loading.js的文件。并写入一下代码。

import { Loading } from 'element-ui';
 
let loadingCount = 0;
let loading;
 
const startLoading = () => {
  loading = Loading.service({
    lock: true,
    text: '拼命加载中...',//可以自定义文字
    spinner:'el-icon-loading',//自定义加载图标类名
    background: 'rgba(0, 0, 0, 0.7)'//遮罩层背景色
  });
};
 
const endLoading = () => {
  loading.close();
};
 
export const showLoading = () => {
  if (loadingCount === 0) {
    startLoading();
  }
  loadingCount += 1;
};
 
export const hideLoading = () => {
  if (loadingCount <= 0) {
    return;
  }
  loadingCount -= 1;
  if (loadingCount === 0) {
    endLoading();
  }
};

然后在base.helper.js文件中写入如下代码:

import axios from 'axios'
import {
    showLoading,
    hideLoading
} from './loading';

import Qs from 'qs'
const service = axios.create({ //这个service是自定义(你自己起的名字)
    baseURL: 'http://rap2api.taobao.org/app/mock/23080/resources/search', //请求的公共地址
    timeout: 3000, // 请求超时时间
    // headers: {'X-Custom-Header': 'foobar'}
});
// 请求拦截器
service.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    showLoading();// 开启loading
    // console.log('拦截到了config');
    return config;
}, function (error) {
    // 对请求错误做些什么
    hideLoading();
    return Promise.reject(error);
});
// 响应拦截器
service.interceptors.response.use(
    response => {
        const res = response.data;
        console.log("response", response)
        hideLoading();// 关闭loading
        // console.log('请求回来的数据', res);
        return res;
    },
    error => {
        // TODO 弹窗处理
        alert(error.message);
        hideLoading();// 关闭loading
        return Promise.reject(error)
    }
)

var $http = {
    getData_fob: async function () {
        var res = await service.get()
        console.log("res", res)
    }
}
export default {
    $http
}

最后在组件中使用





loading组件转载于:https://blog.csdn.net/miao_yf/article/details/100727069

你可能感兴趣的:(Vue,vue)