当前位置:首页 > VUE

vue实现页面加载弹窗

2026-02-25 03:05:34VUE

Vue 实现页面加载弹窗的方法

使用 Vue 组件和状态管理

创建一个独立的弹窗组件(如 LoadingPopup.vue),通过 v-ifv-show 控制显示。结合 Vuex 或 props 传递加载状态。

<template>
  <div class="loading-popup" v-if="isLoading">
    <div class="spinner"></div>
    <p>加载中...</p>
  </div>
</template>

<script>
export default {
  props: {
    isLoading: Boolean
  }
}
</script>

<style>
.loading-popup {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
}
.spinner {
  /* 添加加载动画样式 */
}
</style>

在父组件中控制弹窗

通过父组件的 data 或方法控制弹窗显示,适合简单场景。

<template>
  <div>
    <button @click="fetchData">加载数据</button>
    <LoadingPopup :isLoading="isLoading" />
  </div>
</template>

<script>
import LoadingPopup from './LoadingPopup.vue'
export default {
  components: { LoadingPopup },
  data() {
    return {
      isLoading: false
    }
  },
  methods: {
    async fetchData() {
      this.isLoading = true
      try {
        await axios.get('/api/data')
      } finally {
        this.isLoading = false
      }
    }
  }
}
</script>

使用第三方库

例如 element-uiLoading 组件,直接调用封装好的方法。

import { Loading } from 'element-ui'

// 显示加载
let loadingInstance = Loading.service({ fullscreen: true })

// 关闭加载
loadingInstance.close()

全局加载状态管理

通过 Vuex 集中管理加载状态,适合复杂应用。

// store.js
export default new Vuex.Store({
  state: {
    isLoading: false
  },
  mutations: {
    setLoading(state, payload) {
      state.isLoading = payload
    }
  }
})
<!-- 组件中使用 -->
<template>
  <LoadingPopup :isLoading="$store.state.isLoading" />
</template>

<script>
export default {
  methods: {
    async loadData() {
      this.$store.commit('setLoading', true)
      await fetchData()
      this.$store.commit('setLoading', false)
    }
  }
}
</script>

路由切换时的加载弹窗

使用 Vue Router 的导航守卫触发全局加载状态。

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

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

vue实现页面加载弹窗

标签: 加载页面
分享给朋友:

相关文章

jquery 加载

jquery 加载

jQuery 加载方法 使用jQuery需要先将其库文件加载到网页中。以下是几种常见的加载方式: 通过CDN加载 推荐使用官方或公共CDN(内容分发网络)加载jQuery,速度快且可能被浏览器缓存…

实现vue页面回退

实现vue页面回退

使用 Vue Router 的编程式导航 在 Vue 组件中调用 this.$router.go(-1) 可以实现页面回退。该方法通过操作浏览器历史记录栈实现后退功能,类似于点击浏览器的后退按钮。…

vue实现页面手写

vue实现页面手写

Vue 实现手写功能 在 Vue 中实现手写功能通常需要使用 HTML5 的 Canvas 元素,结合鼠标或触摸事件来捕捉用户的绘制动作。以下是实现步骤和代码示例: 基础实现步骤 创建一个 Vue…

vue页面实现pdf

vue页面实现pdf

在Vue中实现PDF功能 使用vue-pdf库 安装vue-pdf库: npm install vue-pdf 在Vue组件中使用: <template> <pdf :src…

vue实现封锁页面

vue实现封锁页面

Vue 实现封锁页面的方法 使用全局路由守卫 在 Vue 项目中,可以通过 router.beforeEach 全局路由守卫拦截导航,实现页面封锁。例如,检查用户权限或登录状态,未通过验证时重定向到指…

react如何分割页面

react如何分割页面

在React中分割页面的方法 React提供了多种方式来实现页面的分割和模块化,以下是一些常见的方法: 使用组件化开发 将页面拆分为多个独立的组件,每个组件负责特定的功能或UI部分。通过组合这些组件…