当前位置:首页 > VUE

Vue全局loading实现

2026-02-17 22:06:50VUE

Vue全局Loading的实现方法

在Vue项目中实现全局Loading效果,可以通过以下几种方式:

使用Vue插件封装全局组件

创建一个Loading组件并注册为全局组件,通过Vue.prototype或provide/inject实现全局调用。

Vue全局loading实现

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

<script>
export default {
  data() {
    return {
      visible: false
    }
  },
  methods: {
    show() {
      this.visible = true
    },
    hide() {
      this.visible = false
    }
  }
}
</script>
// main.js注册全局方法
import Loading from '@/components/Loading'
const loading = {
  install(Vue) {
    const tpl = Vue.extend(Loading)
    const instance = new tpl().$mount()
    document.body.appendChild(instance.$el)

    Vue.prototype.$loading = {
      show: () => instance.show(),
      hide: () => instance.hide()
    }
  }
}
Vue.use(loading)

结合Vuex状态管理

通过Vuex集中管理Loading状态,实现组件间共享。

Vue全局loading实现

// store.js
export default new Vuex.Store({
  state: {
    loading: false
  },
  mutations: {
    SET_LOADING(state, payload) {
      state.loading = payload
    }
  }
})
// 在组件中使用
this.$store.commit('SET_LOADING', true)

使用axios拦截器实现请求Loading

在请求拦截器中自动显示Loading,响应拦截器中隐藏。

// http.js
axios.interceptors.request.use(config => {
  store.commit('SET_LOADING', true)
  return config
})

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

使用第三方库

如v-loading、Element UI的Loading服务等。

// Element UI示例
import { Loading } from 'element-ui'

let loadingInstance = Loading.service(options)
loadingInstance.close()

实现注意事项

  • 考虑多次请求时的Loading状态管理
  • 添加防抖处理避免频繁闪烁
  • 提供自定义样式和文案的能力
  • 在SSR环境下需要考虑服务端渲染兼容性

以上方法可根据项目需求选择或组合使用,插件化方案适合中小型项目,Vuex方案适合状态复杂的大型应用。

标签: 全局Vue
分享给朋友:

相关文章

Vue数据依赖实现

Vue数据依赖实现

Vue数据依赖实现原理 Vue的数据依赖实现基于响应式系统,核心是通过Object.defineProperty或Proxy拦截数据变化,结合发布-订阅模式实现依赖收集和更新触发。 核心机制 依赖…

Vue实现歌曲列表

Vue实现歌曲列表

Vue实现歌曲列表的方法 使用Vue实现歌曲列表可以通过组件化开发、数据绑定和事件处理来完成。以下是具体实现步骤: 数据准备 定义一个包含歌曲信息的数组,每个元素包含歌曲名称、歌手、时长等属性。数…

Vue前端路由实现

Vue前端路由实现

Vue前端路由的实现方式 Vue前端路由通常通过vue-router库实现,它是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是核心实现方法和步骤: 安装vue-router…

Vue实现音乐列表

Vue实现音乐列表

Vue 实现音乐列表的方法 数据准备与绑定 在 Vue 中实现音乐列表,首先需要准备音乐数据。可以通过数组形式存储音乐信息,例如歌曲名称、歌手、封面图片和播放链接。数据可以存储在组件的 data 属性…

Vue的扫雷实现

Vue的扫雷实现

Vue 扫雷实现步骤 准备工作 确保已安装 Vue CLI 或通过 CDN 引入 Vue。创建一个 Vue 项目或单文件组件,初始化游戏所需的数据结构(如雷区矩阵、雷数量、游戏状态等)。 数据结构…

vue实现全局方法

vue实现全局方法

在 Vue 中实现全局方法 Vue 中可以通过多种方式实现全局方法,以下是常见的几种方法: 1. 通过 Vue.prototype 添加全局方法 在 Vue 的原型上添加方法,这样所有的 Vue…