当前位置:首页 > VUE

vue实现加载中

2026-03-10 13:37:45VUE

Vue 实现加载中效果的方法

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

使用 v-if 或 v-show 控制加载状态

通过数据绑定控制加载中的显示与隐藏,适用于简单的场景:

<template>
  <div>
    <div v-if="isLoading">加载中...</div>
    <div v-else>内容已加载</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: true
    }
  },
  mounted() {
    setTimeout(() => {
      this.isLoading = false
    }, 2000)
  }
}
</script>

使用第三方库如 Element UI 或 Vuetify

这些 UI 框架提供了内置的加载组件,可以快速实现专业效果:

<template>
  <div>
    <el-button @click="showLoading">显示加载</el-button>
    <el-button @click="closeLoading">关闭加载</el-button>
    <el-loading :loading="loading"></el-loading>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: false
    }
  },
  methods: {
    showLoading() {
      this.loading = true
    },
    closeLoading() {
      this.loading = false
    }
  }
}
</script>

使用 CSS 动画实现自定义加载效果

通过 CSS 可以创建更个性化的加载动画:

<template>
  <div class="loading-container" v-if="isLoading">
    <div class="loading-spinner"></div>
  </div>
</template>

<style>
.loading-spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

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

使用全局加载状态管理

对于大型应用,可以通过 Vuex 管理全局加载状态:

// store.js
export default new Vuex.Store({
  state: {
    isLoading: false
  },
  mutations: {
    setLoading(state, status) {
      state.isLoading = status
    }
  }
})

// 组件中使用
<template>
  <div>
    <div v-if="$store.state.isLoading">全局加载中...</div>
  </div>
</template>

结合 axios 拦截器实现自动加载

在请求时自动显示加载,请求完成隐藏:

// http.js
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)
})

使用异步组件和 Suspense(Vue 3)

Vue 3 的 Suspense 组件可以优雅地处理异步加载:

vue实现加载中

<template>
  <Suspense>
    <template #default>
      <AsyncComponent />
    </template>
    <template #fallback>
      <div>加载中...</div>
    </template>
  </Suspense>
</template>

<script>
const AsyncComponent = defineAsyncComponent(() =>
  import('./AsyncComponent.vue')
)
</script>

每种方法适用于不同场景,可以根据项目需求选择合适的实现方式。简单的项目可以使用 v-if 或 CSS 动画,复杂项目推荐使用状态管理或拦截器方案。

标签: 加载中vue
分享给朋友:

相关文章

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

实现vue组件

实现vue组件

Vue 组件的基本实现 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种方式: 单文件组件 (SFC) 使用 .vue 文件格式,…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

vue实现webapp

vue实现webapp

Vue 实现 WebApp 的基本步骤 环境准备 确保已安装 Node.js 和 npm/yarn。通过 Vue CLI 或 Vite 创建项目: npm install -g @vue/cli v…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…