当前位置:首页 > VUE

vue请求实现进度条

2026-01-07 06:33:08VUE

实现请求进度条的方法

在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法:

使用axios和nprogress

安装依赖:

vue请求实现进度条

npm install axios nprogress

在请求拦截器和响应拦截器中添加进度条控制:

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

axios.interceptors.request.use(config => {
  NProgress.start();
  return config;
});

axios.interceptors.response.use(response => {
  NProgress.done();
  return response;
}, error => {
  NProgress.done();
  return Promise.reject(error);
});

自定义进度条组件

创建一个Vue组件实现进度条效果:

vue请求实现进度条

<template>
  <div class="progress-bar" v-if="isLoading">
    <div class="progress" :style="{ width: progress + '%' }"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: false,
      progress: 0
    };
  },
  methods: {
    start() {
      this.isLoading = true;
      this.progress = 0;
      const interval = setInterval(() => {
        this.progress += 10;
        if (this.progress >= 100) {
          clearInterval(interval);
        }
      }, 100);
    },
    finish() {
      this.progress = 100;
      setTimeout(() => {
        this.isLoading = false;
      }, 300);
    }
  }
};
</script>

<style>
.progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background-color: #f0f0f0;
  z-index: 9999;
}
.progress {
  height: 100%;
  background-color: #42b983;
  transition: width 0.3s ease;
}
</style>

在全局或局部注册组件后,在请求时调用startfinish方法。

结合Vue Router实现路由切换进度条

在路由切换时显示进度条:

import Vue from 'vue';
import Router from 'vue-router';
import NProgress from 'nprogress';

Vue.use(Router);

const router = new Router({
  routes: [...]
});

router.beforeEach((to, from, next) => {
  NProgress.start();
  next();
});

router.afterEach(() => {
  NProgress.done();
});

以上方法可根据具体需求选择或组合使用。第三方库如nprogress提供了开箱即用的解决方案,而自定义组件则更灵活可控。

标签: 进度条vue
分享给朋友:

相关文章

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件:…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成…

vue实现冰墩墩

vue实现冰墩墩

使用 Vue 实现冰墩墩动画 通过 Vue 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLH…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <temp…