vue-element-admin 全局loading加载等待

yizhihongxing

Vue-Element-Admin 是一个基于 Vue.js 的前端管理系统框架,该框架支持全局loading加载等待功能,可以有效提升用户体验。下面将介绍如何在 Vue-Element-Admin 中使用全局loading加载等待功能的完整攻略。

添加全局loading组件

首先,在 src/layout/components/AppMain.vue 文件中添加以下代码:

<template>
  <div class="app-main">
    <loading ref="loading"></loading>
    <router-view></router-view>
  </div>
</template>

<script>
  import Loading from '@/components/Loading'

  export default {
    components: {
      Loading
    },
    methods: {
      showLoading () {
        this.$refs.loading.show()
      },
      hideLoading () {
        this.$refs.loading.hide()
      }
    }
  }
</script>

<div class="app-main"> 标签中添加了一个全局 loading 组件,并且为组件添加了 ref 属性方便调用。在 methods 中定义了两个方法 showLoading()hideLoading() 分别用于显示和隐藏全局loading组件。

在全局路由钩子中使用loading

接下来,在 src/permission.js 文件中增加 router.beforeEach 的钩子函数:

import router from './router'
import store from './store'

router.beforeEach((to, from, next) => {
  store.dispatch('user/getUserInfo').then(() => {
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      next()
    }
  }).catch(() => {
    if (to.path === '/login') {
      next()
    } else {
      next(`/login?redirect=${to.path}`)
    }
  }).finally(() => {
    store.dispatch('app/hideLoading')
  })

})

router.afterEach(() => {
  store.dispatch('app/hideLoading')
})

该钩子函数中通过 store.dispatch('app/hideLoading') 方法来隐藏全局loading组件。

示例

接下来以 axios 请求为例,来展示如何通过调用 showLoading 和 hideLoading 方法来控制全局loading组件的显示和隐藏。

// 引入axios
import axios from 'axios'
// 引入Vue
import Vue from 'vue'
// 全局添加一个 axios 拦截器
axios.interceptors.request.use((config) => {
  // 显示loading
  Vue.$app.showLoading()
  return config
}, error => {
  return Promise.reject(error)
})

axios.interceptors.response.use((response) => {
  // 隐藏loading
  Vue.$app.hideLoading()
  return response
}, error => {
  // 隐藏loading
  Vue.$app.hideLoading()
  return Promise.reject(error.response.data)
})

在请求过程中,如果调用了 showLoading 方法,则全局的loading组件会显示出来,请求完成后再调用 hideLoading 方法,全局loading组件即可以隐藏。

以上就是使用 Vue-Element-Admin 实现全局loading加载等待功能的完整攻略及示例。区别在于,其中的 this.$refs.loadingVue.$app 都是通过调用不同的组件和全局变量实现的,具体要根据实际情况进行调整。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-element-admin 全局loading加载等待 - Python技术站

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

相关文章

  • Vue开发之封装上传文件组件与用法示例

    Vue开发之封装上传文件组件与用法示例 一、概述 在Vue项目中,我们经常需要使用到上传文件的功能,为了提高代码的可复用性并减少冗余代码,我们可以封装一个通用的上传文件组件。本篇攻略将介绍如何封装上传文件组件以及如何在Vue项目中使用该组件。 二、上传文件组件的封装 创建 UploadFile.vue 组件文件,并添加如下代码: <template&g…

    Vue 2023年5月28日
    00
  • Vue的属性、方法、生命周期实例代码详解

    Vue是一种流行的JavaScript框架,在前端开发中被广泛使用。在Vue的学习过程中,理解Vue的属性、方法以及生命周期是非常重要的。下面是Vue的属性、方法以及生命周期的详细讲解。 属性 el el属性是Vue实例挂载的元素。可以是CSS选择器、HTML元素或DOM对象。 <div id="app"></div&g…

    Vue 2023年5月27日
    00
  • Vue高级组件之函数式组件的使用场景与源码分析

    下面是Vue高级组件之函数式组件的使用场景与源码分析的详细攻略: 什么是函数式组件? 函数式组件在Vue2.3版本中引入的新特性,可以提高组件的性能和减少不必要的组件实例化。它是一种纯函数,接受一个props对象并返回渲染的虚拟DOM。它没有状态(即数据驱动),也没有实例,所以没有生命周期函数,仅仅是一个接收props并返回渲染vnode的函数。使用函数式组…

    Vue 2023年5月28日
    00
  • JS基于ES6新特性async await进行异步处理操作示例

    以下是JS基于ES6新特性async await进行异步处理操作的完整攻略: 什么是Async/Await Async/Await是ES2017引入的异步编程新特性,通过async函数定义的异步函数和await关键字的使用,可以大大简化异步编程的代码复杂度,使代码更加清晰易懂。 Async/Await的使用方法 定义异步函数 异步函数的定义需要使用async…

    Vue 2023年5月28日
    00
  • vue项目使用electron进行打包操作的全过程

    以下是vue项目使用electron进行打包操作的全过程: 步骤一:创建vue项目 首先,我们需要先创建一个vue项目。可以使用vue-cli快速搭建一个工程: npm install -g vue-cli vue init webpack my-vue-project 步骤二:添加 electron 接下来我们需要添加 electron。这里使用的是 el…

    Vue 2023年5月27日
    00
  • Vue 重置data的数据为初始状态操作

    重置Vue组件的data数据为初始状态操作,通常涉及到将组件内部的data数据重置为初始值。这在实际开发中十分有用,比如表单重置、页面切换等操作。本文将介绍三种重置Vue组件data数据的方法。 方法一:直接定义一个初始data对象 我们可以定义一个初始的data对象,并使用Object.assign()方法将其复制给data对象。 <template…

    Vue 2023年5月28日
    00
  • vuex的辅助函数该如何使用

    Vuex是一个专为Vue.js应用程序开发的状态管理模式。Vuex的辅助函数提供了一种简化使用Vuex的方法。本文将详细介绍Vuex辅助函数的使用方法,以及两个示例的说明。 关于Vuex辅助函数 Vuex的辅助函数本质上是基于Vuex Store的全局getState、commit、dispatch和mapState、mapGetters、mapMutati…

    Vue 2023年5月28日
    00
  • 17个vue常用的数组方法总结与实例演示

    我们来详细讲解一下“17个vue常用的数组方法总结与实例演示”的完整攻略。 一、前言 在Vue中,我们经常需要操作数组。而对于数组的操作,Vue提供了许多方便快捷的方法。本文将对Vue中17个常用的数组方法进行总结和实例演示,方便大家学习和使用。 二、数组方法 1. push 向数组添加一个或多个元素,并返回新的长度。 let arr = [1,2,3]; …

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