当前位置:首页 > VUE

vue 怎么实现loading

2026-03-09 23:06:10VUE

实现 Loading 的方法

在 Vue 中实现 Loading 效果可以通过多种方式完成,以下是几种常见的方法:

全局 Loading 组件

创建一个全局的 Loading 组件,通过 Vuex 或事件总线控制其显示与隐藏。在需要的地方调用相应的方法即可。

// Loading.vue
<template>
  <div v-if="isLoading" class="loading-overlay">
    <div class="loading-spinner"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: false
    }
  },
  methods: {
    show() {
      this.isLoading = true
    },
    hide() {
      this.isLoading = false
    }
  }
}
</script>

使用第三方库

许多第三方库如 element-uivant 等提供了现成的 Loading 组件,可以直接使用。

// 使用 element-ui 的 Loading
import { Loading } from 'element-ui'

let loadingInstance = Loading.service({ fullscreen: true })
// 关闭 Loading
loadingInstance.close()

路由守卫中实现 Loading

在路由切换时显示 Loading,确保页面加载完成后再隐藏。

// router.js
router.beforeEach((to, from, next) => {
  store.commit('setLoading', true)
  next()
})

router.afterEach(() => {
  store.commit('setLoading', false)
})

HTTP 拦截器中实现 Loading

在发送 HTTP 请求时显示 Loading,请求完成后隐藏。

// axios 拦截器
axios.interceptors.request.use(config => {
  store.commit('setLoading', true)
  return config
})

axios.interceptors.response.use(response => {
  store.commit('setLoading', false)
  return response
}, error => {
  store.commit('setLoading', false)
  return Promise.reject(error)
})

自定义 Loading 动画

可以通过 CSS 或 SVG 实现自定义的 Loading 动画,增强用户体验。

.loading-spinner {
  border: 4px solid rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  border-top: 4px solid #3498db;
  width: 40px;
  height: 40px;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

结合异步操作

在异步操作如 async/await 中控制 Loading 的显示与隐藏。

vue 怎么实现loading

methods: {
  async fetchData() {
    this.isLoading = true
    try {
      const response = await axios.get('/api/data')
      this.data = response.data
    } catch (error) {
      console.error(error)
    } finally {
      this.isLoading = false
    }
  }
}

通过以上方法,可以根据具体需求在 Vue 项目中灵活实现 Loading 效果。

标签: vueloading
分享给朋友:

相关文章

vue实现多级弹窗

vue实现多级弹窗

Vue 多级弹窗实现方法 方法一:使用动态组件与递归组件 在 Vue 中可以通过动态组件配合递归组件实现多级弹窗。定义一个基础弹窗组件,通过递归调用自身实现层级嵌套。 基础弹窗组件模板示例: &…

vue tag实现

vue tag实现

Vue 标签实现方法 在 Vue 中实现标签功能可以通过多种方式完成,常见场景包括动态标签生成、标签输入框、标签管理等。以下是几种典型实现方案: 动态标签列表渲染 使用 v-for 指令渲染标签数组…

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data: {…

vue实现报表

vue实现报表

vue实现报表的方法 使用Vue实现报表通常需要结合图表库或表格组件。以下是几种常见方法: 使用ECharts 安装ECharts库: npm install echarts vue-echart…

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue SSG实现

vue SSG实现

Vue SSG 实现方法 Vue 的静态站点生成(SSG)可以通过多种工具和框架实现,以下是几种常见的方法: 使用 VuePress VuePress 是一个基于 Vue 的静态站点生成器,适合文档…