vue中封装axios,带有切片加载及进度显示

文章介绍了如何在Vue项目中封装axios,以便全局使用,并结合nprogress插件实现请求时的进度条显示。具体步骤包括安装axios和nprogress,设置axios的基本配置,添加请求和响应拦截器以控制进度条,以及在组件中使用封装后的axios进行文件上传并跟踪上传进度。
摘要由CSDN通过智能技术生成

当你在Vue中使用axios时,你可以将它封装在一个单独的文件中,以便在整个应用程序中重复使用它,并将切片加载和进度显示添加到它中。下面是一个可能的实现:

1.安装axios和进度条插件nprogress:

npm install axios nprogress --save

2.在src/utils文件夹下创建一个新的文件axios.js,然后在其中编写以下代码:

import axios from 'axios';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';

axios.defaults.baseURL = 'https://your-api-domain.com/api';
axios.defaults.timeout = 10000; // 设置超时时间

// 请求拦截器
axios.interceptors.request.use((config) => {
  NProgress.start(); // 进度条开始
  return config;
}, (error) => {
  NProgress.done(); // 进度条结束
  return Promise.reject(error);
});

// 响应拦截器
axios.interceptors.response.use((response) => {
  NProgress.done(); // 进度条结束
  return response;
}, (error) => {
  NProgress.done(); // 进度条结束
  return Promise.reject(error);
});

// 封装axios方法
export function request(method, url, data, onUploadProgress) {
  return axios({
    method,
    url,
    data,
    onUploadProgress, // 上传进度回调函数
    // 以下是切片加载所需的配置
    maxContentLength: 1024 * 1024 * 10, // 最大数据量
    maxBodyLength: 1024 * 1024 * 10, // 最大请求长度
    timeout: 0, // 无限等待响应
  });
}

3.在你的Vue组件中使用该封装的axios:

import { request } from '@/utils/axios';

export default {
  methods: {
    // 上传文件
    async uploadFile(file) {
      const formData = new FormData();
      formData.append('file', file);
      await request('post', '/upload', formData, (progressEvent) => {
        const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);
        console.log(percentCompleted); // 打印上传进度
      });
      console.log('上传完成');
    },
  },
};

在此示例中,我们在request函数中添加了onUploadProgress回调函数来跟踪文件上传进度。您可以根据需要自行更改此函数的实现方式。

此外,我们还在axios拦截器中添加了NProgress插件,以在每个请求和响应之间显示进度条。这将为用户提供更好的用户体验。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值