vue 全局封装loading加载教程(全局监听)

接下来我将为你详细讲解“vue 全局封装loading加载教程(全局监听)”的完整攻略。

如何全局封装loading加载?

一、创建 loading 组件

我们可以先创建一个 Loading 组件,该组件实现了一个全屏的 loading 效果,可以通过控制它的显示和隐藏来实现 loading 效果。

<template>
  <div v-show="loadingFlag" class="loading">
    <div class="loading-inner">Loading...</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loadingFlag: false
    };
  }
};
</script>

<style>
.loading {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  background: rgba(255, 255, 255, 0.7);
  z-index: 9999;
}
.loading-inner {
  font-size: 24px;
}
</style>

二、全局注册 Loading 组件

我们可以在 main.js 文件中,将该组件全局注册,这样各个组件都可以访问到该组件。

import Vue from 'vue'
import App from './App.vue'
import Loading from './components/Loading.vue'

Vue.component('Loading', Loading)

new Vue({
  render: h => h(App)
}).$mount('#app')

三、全局监听路由变化

我们可以使用路由的 beforeEach 方法,在路由变化时,判断是否需要显示 loading,并在路由变化完成后,进行 loading 的隐藏。

router.beforeEach((to, from, next) => {
  // 显示 loading
  Vue.prototype.$showLoading()

  next()
})

router.afterEach(() => {
  // 隐藏 loading
  Vue.prototype.$hideLoading()
})

四、在 Vue 的 prototype 上挂载方法

我们将在 Vue 的 prototype 上挂载 $showLoading 和 $hideLoading 方法,在各个组件内部,通过 this.$showLoading() 和 this.$hideLoading() 方法来控制 loading 的显示和隐藏。

Vue.prototype.$showLoading = function() {
  this.$refs.loading.loadingFlag = true
}

Vue.prototype.$hideLoading = function() {
  this.$refs.loading.loadingFlag = false
}

示例说明

下面给出两个示例,以说明如何在 Vue 中使用全局封装 loading 加载。

示例一:在 axios 发出请求时显示 loading

当 axios 发送请求时,我们可以使用拦截器 interceptors 来控制 loading 的显示和隐藏。

import axios from 'axios'

axios.interceptors.request.use(function(config) {
  // 显示 loading
  Vue.prototype.$showLoading()

  return config
}, function(error) {
  // 隐藏 loading
  Vue.prototype.$hideLoading()

  return Promise.reject(error)
})

axios.interceptors.response.use(function(response) {
  // 隐藏 loading
  Vue.prototype.$hideLoading()

  return response
}, function(error) {
  // 隐藏 loading
  Vue.prototype.$hideLoading()

  return Promise.reject(error)
})

示例二:在异步操作时显示 loading

在异步操作中,我们可以使用 Promise 的 then 和 catch 方法,来控制 loading 的显示和隐藏。

export default {
  methods: {
    async doSomething() {
      try {
        // 显示 loading
        this.$showLoading()

        // 异步操作
        await doSomeAsync()

        // 隐藏 loading
        this.$hideLoading()
      } catch (e) {
        // 隐藏 loading
        this.$hideLoading()
      }
    }
  }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 全局封装loading加载教程(全局监听) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue组件开发之异步组件详解

    Vue组件开发之异步组件详解 什么是异步组件 异步组件,即按需加载组件,是指将组件拆分成各个小模块,并根据需要动态加载组件。这样可以在首次加载应用时,只加载必要的资源,以提升应用的性能。 异步组件使用方法 在 Vue.js 中,如何使用异步组件呢?在 Vue.js 中,我们可以通过 import() 语法或使用特殊的 async component 语法定义…

    Vue 2023年5月28日
    00
  • 如何用webpack4带你实现一个vue的打包的项目

    下面是如何用webpack4带你实现一个vue的打包的项目的完整攻略。 一、安装和配置webpack 首先安装webpack和webpack-cli依赖: npm install webpack webpack-cli –save-dev 然后在项目根目录下创建webpack.config.js文件,并写入如下配置: module.exports = { …

    Vue 2023年5月28日
    00
  • Vue.JS入门教程之自定义指令

    下面我就为你详细讲解 Vue.JS 入门教程之自定义指令的完整攻略。 什么是自定义指令 Vue.JS 中的指令是一种特殊的标记,可以在模板中使用,用于对 HTML 元素进行特殊处理。Vue.JS 提供了一些内建指令(例如 v-if、v-for、v-bind 等),同时也提供了自定义指令的功能,允许开发者自己定义指令来扩展 Vue.JS 的功能。 自定义指令通…

    Vue 2023年5月27日
    00
  • vue3 typescript封装axios过程示例

    关于“vue3 typescript封装axios过程示例”的完整攻略,以下是步骤: 一、安装依赖 在Vue3项目中,先安装vue3,使用命令:npm install vue@next –save 安装typescript,使用命令:npm install typescript –save-dev 安装axios,使用命令:npm install axi…

    Vue 2023年5月28日
    00
  • vue中三种调用接口的方法

    当我们在使用Vue框架开发应用时,经常需要从后端服务器获取数据,这就需要我们调用接口来实现。Vue中提供了三种常见的方式来调用API接口,分别是使用浏览器原生API发起请求、使用axios库、使用VueResource插件。下面我们来详细讲解一下这三种调用接口的方法。 使用浏览器原生API发起请求 使用浏览器原生API发起请求很简单,可以直接使用JavaSc…

    Vue 2023年5月28日
    00
  • vue增删改查的简单操作

    下面我将为您详细讲解“Vue增删改查的简单操作”的完整攻略。 简介 Vue是一款流行的前端框架,在Vue中增删改查是非常常见和重要的功能,本篇攻略将详细讲解Vue中增删改查的简单操作。 前置技能 在学习Vue增删改查之前,您需要具备以下技能:- 熟悉Vue框架- 掌握Vue的基本知识,如组件、数据响应式等- 掌握JavaScript的基本知识,如变量、函数、…

    Vue 2023年5月27日
    00
  • VUE实现表单元素双向绑定(总结)

    “VUE实现表单元素双向绑定(总结)”是一篇VUE相关的实战教程,主要介绍如何利用VUE框架实现表单元素双向绑定的功能,以下是该教程的完整攻略: 首先读者需要先了解VUE的数据绑定原理,以及掌握VUE的基础知识,包括VUE模板、指令、表达式等内容。 在实现表单元素双向绑定的过程中,需要使用VUE的v-model指令,该指令实现了表单元素和数据模型之间的双向绑…

    Vue 2023年5月27日
    00
  • Vue项目配置router.js流程分析讲解

    Vue项目可以使用Vue Router来实现页面的路由管理。在配置Vue项目中使用Vue Router,需要在项目中引入Vue Router并在router.js文件中进行路由的配置。下面是Vue项目配置router.js的详细攻略: 安装Vue Router 在Vue项目中使用Vue Router 需要先安装Vue Router。可以使用npm来进行安装,…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部