当前位置:首页 > VUE

Vue全局loading实现

2026-02-17 22:06:50VUE

Vue全局Loading的实现方法

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

使用Vue插件封装全局组件

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

// 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状态,实现组件间共享。

// 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服务等。

Vue全局loading实现

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

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

实现注意事项

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

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

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

相关文章

Vue实现lagger页面

Vue实现lagger页面

Vue实现懒加载页面的方法 懒加载(Lazy Loading)是一种优化技术,用于延迟加载页面或组件,直到它们真正需要显示时才加载。以下是几种在Vue中实现懒加载页面的常见方法: 使用Vue Rou…

利用Vue实现

利用Vue实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是常见的实现步骤: 创建 Vue 组件 使用 Vue 的单文件组件(SFC)结构,包含模板、脚本和样式部分。…

Vue查看全文实现

Vue查看全文实现

Vue 查看全文实现方法 在Vue中实现查看全文功能通常涉及文本截断和展开/折叠操作,以下是几种常见实现方式: 使用CSS控制文本显示 通过CSS的text-overflow和line-clamp属…

Vue实现聊天软件

Vue实现聊天软件

Vue实现聊天软件的关键步骤 环境准备与项目初始化 使用Vue CLI或Vite创建Vue 3项目,安装必要依赖如vue-router、pinia(状态管理)、socket.io-client(实时通…

Vue拖拽怎么实现

Vue拖拽怎么实现

Vue拖拽实现方法 使用Vue实现拖拽功能可以通过原生HTML5的拖拽API或第三方库如vuedraggable来实现。以下是两种常见的方法: 使用HTML5拖拽API HTML5提供了原生的拖拽A…

Vue怎么实现权限验证

Vue怎么实现权限验证

Vue权限验证实现方法 路由守卫验证 在router.js中配置全局前置守卫,通过meta字段标记路由权限要求。检查用户权限是否匹配,未匹配则跳转到登录页或403页面。 router.beforeE…