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

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日

相关文章

  • JavaScript实现的圆形浮动标签云效果实例

    下面是实现“JavaScript实现的圆形浮动标签云效果实例”的完整攻略: 1. 实现思路 要实现圆形浮动标签云效果,我们需要根据标签数量生成标签,并随机赋予标签位置和颜色等属性,随着页面滚动,标签应该在页面中随机漂浮。实现的大致思路如下: 准备标签数据; 创建标签元素,设置属性和样式; 随机位置和颜色等属性; 将标签添加到页面中; 定时器控制标签漂浮效果。…

    Vue 2023年5月29日
    00
  • 解析Vue.use()是干什么的

    Vue.use()是Vue提供的一个插件安装方法,它的作用是用来注册全局Vue.js插件。我们可以使用该方法将自己编写的插件安装到Vue中,以便在全局中使用。 下面是Vue.use()的语法: Vue.use(plugin) 其中,plugin为一个对象或函数,它必须包含一个install方法,install方法在插件安装时会被调用。此外,它还可以包含其他的…

    Vue 2023年5月28日
    00
  • 详解vue.js移动端配置flexible.js及注意事项

    详解vue.js移动端配置flexible.js及注意事项 介绍 随着移动端市场的扩大,越来越多的网站和应用开始关注移动端的适配问题。Vue.js作为一种前端开发的流行框架,也需要考虑移动端适配问题。本文将介绍如何在Vue.js中配置flexible.js实现移动端适配,以及在使用过程中需要注意的细节。 flexible.js介绍 flexible.js是淘…

    Vue 2023年5月28日
    00
  • Vue NextTick介绍与使用原理

    Vue NextTick介绍与使用原理 Vue NextTick是Vue提供的一个API, 用于在DOM更新后执行异步回调。在前端开发中,我们经常遇到需要在DOM更新完毕后,再执行一些操作的场景,例如修改某个元素的高度或宽度等。这时候,就需要用到Vue NextTick。 NextTick使用方法 Vue中,我们可以通过以下方式使用Vue NextTick:…

    Vue 2023年5月28日
    00
  • Vue中ref、reactive、toRef、toRefs、$refs的基本用法总结

    以下是Vue中ref、reactive、toRef、toRefs、$refs的完整攻略: 1. ref ref 可以将组件或DOM元素在父组件中进行标识。同时,也可以在父组件中使用 $refs 访问到子组件或DOM元素。使用ref的方式如下: <template> <div> <input type="text&quo…

    Vue 2023年5月28日
    00
  • 了解ESlint和其相关操作小结

    了解ESlint和其相关操作小结 什么是ESlint? ESlint是一款JavaScript的代码检查工具,它可以帮助我们提高代码质量,发现一些潜在的问题。ESlint使用插件化的架构,可以支持多种不同的检查规则,可以通过配置文件(.eslintrc文件)进行自定义规则的设置。 怎么使用ESlint 使用ESlint有如下基本步骤: 1. 安装ESlint…

    Vue 2023年5月28日
    00
  • 如何使用Vue的思想封装一个Storage

    需要封装一个类似Storage的功能时,我们可以使用Vue的思想进行封装,具体步骤如下: 第一步:思考Storage的使用场景 Storage是一种用于存储数据的机制。我们在使用Storage时需要考虑到以下几个场景: 存储数据(可以是任意类型) 获取数据 删除数据 清空数据 第二步:创建存储数据的对象 首先,我们需要创建一个能够存储数据的对象。由于Vue.…

    Vue 2023年5月27日
    00
  • Vue3中watch监听使用详解

    下面详细讲解Vue3中watch监听的使用方法。 什么是Vue3中的watch监听 watch监听是Vue3的一个新特性,它可以用于观察 Vue 实例数据的变化,执行一些副作用操作。Vue3中watch监听的基本语法如下: <template> <div> {{ message }} </div> </templat…

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