当前位置:首页 > 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 动画实现自定义加载效果

vue实现加载中

通过 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 管理全局加载状态:

vue实现加载中

// 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 组件可以优雅地处理异步加载:

<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 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &l…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…

vue实现popup

vue实现popup

Vue 实现 Popup 弹窗 使用 Vue 原生组件 创建一个基本的 Vue 组件作为弹窗,通过 v-if 或 v-show 控制显示隐藏。 <template> <div&…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现京东

vue实现京东

Vue 实现京东电商网站的关键步骤 项目搭建与基础配置 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理路由,Vuex/Pinia 管理状态。配置基础 UI 框架如 E…

vue分页实现

vue分页实现

实现Vue分页的几种方法 使用Element UI的分页组件 安装Element UI库后,可以直接使用其分页组件。以下是一个基本示例: <template> <div>…