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

yizhihongxing

接下来我将为你详细讲解“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手机号正则匹配姓名加密展示功能的步骤如下: 1. 编写Vue组件 首先,我们需要编写Vue组件来实现手机号的正则匹配和姓名的加密功能。在组件中,我们可以使用Vue的computed属性来实现数据的计算和展示。具体代码示例如下: <template> <div> <input v-model="phone&qu…

    Vue 2023年5月27日
    00
  • 如何在Vue中使用debouce防抖函数

    当我们在Vue组件中使用一些高频操作时,例如input事件的实时搜索,我们会发现输入一个字母就会发送一次请求,导致不必要的请求和资源浪费,这时候可以通过引入debounce防抖函数进行优化。下面是关于在Vue中使用debounce防抖函数的完整攻略: 1. 安装lodash debounce函数通常是使用lodash库中的_.debounce函数来实现的,因…

    Vue 2023年5月28日
    00
  • 详解vue-cli3开发Chrome插件实践

    详解vue-cli3开发Chrome插件实践 前言 Vue-CLI 3是Vue.js发布的脚手架构建工具。它易于使用,且支持自定义配置,本文就是基于Vue-CLI 3来开发Chrome插件的。 环境 在开始之前,确保本地已经安装了Node.js和Vue-CLI 3,安装方法如下: 1.下载 Node.js:https://nodejs.org/en/down…

    Vue 2023年5月27日
    00
  • vue3 hook自动导入原理解析

    我来为你详细讲解一下“vue3 hook自动导入原理解析”的攻略。 什么是Vue3 Hook Vue3中,为了更好地组织代码,同时也为了解决vue2中使用mixin会出现命名冲突的问题,新增了Hook的概念。Hook实际上就是一些特定的函数,它们和组件生命周期函数类似,但是可以被任意组合使用,而且可以被多个组件复用。Vue3中内置了多个Hook,例如useS…

    Vue 2023年5月28日
    00
  • vue + axios get下载文件功能

    简介 Vue.js是一种渐进式JavaScript框架,它可以帮助开发人员更轻松地构建交互式的用户界面。Axios则是一个用于浏览器和Node.js的基于Promise的HTTP客户端,用于处理AJAX请求和RESTful API。本文将介绍如何结合Vue和Axios实现下载文件的功能。 实现过程 首先需要在Vue项目中安装Axios。可以使用npm命令行工…

    Vue 2023年5月28日
    00
  • Vue2.0实现自适应分辨率

    下面我来详细讲解“Vue2.0实现自适应分辨率”的完整攻略。 1. 什么是自适应分辨率? 自适应分辨率指随着设备分辨率的变化而自动适应显示效果,实现在不同分辨率设备上呈现相同的视觉效果。 2. 如何实现自适应分辨率? 实现自适应分辨率的关键是通过响应式设计方法,在不同尺寸的设备上渲染相应的页面视图。Vue2.0框架提供了多种方法实现自适应分辨率,包括: 2.…

    Vue 2023年5月28日
    00
  • 代号为Naruto的Vue 2.7正式发布功能详解

    代号为Naruto的Vue 2.7正式发布功能详解 概述 Naruto是 Vue 官方发布的最新版本,它是 Vue.js 2.x 系列的最后一个版本,也是Vue最后一个大版本更新,主要目的是为了真正实现”渐进式框架”的理念,其中包含了一些重大的变化和新功能。 在这篇文章中,我们将介绍Naruto的一些最新功能,以及如何在Vue应用程序中使用它们。 Compo…

    Vue 2023年5月28日
    00
  • Flowable中定时器的玩法详解

    Flowable中定时器的玩法详解 在Flowable中,定时器是一个非常有用的机制,通过它可以实现一些定时执行的任务,比如定时发送邮件、自动归档数据等等。本文将详细介绍Flowable中定时器的使用方法。 什么是定时器 定时器是在流程执行的某个节点上设置一个定时器,然后在设定的时间点上自动执行某些动作的机制。比如,我们可以设置一个定时器,在一个任务节点上,…

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