VUE3(三十九)自定义loading组件~

简介: VUE3(三十九)自定义loading组件~

我使用的比较多的是阿里的ant-design-vue组件库。


在这里好像没有找到太好用的全局loading。


组件库没有,那就自定义一个吧,主要是定义成啥样的呢?嗯……layui没黄之前,他那个loading我甚是喜欢,就整他了。


我这里使用的是VUE3.2+typescript,上代码:


loading.vue


<template>
  <div class="loading" v-show="msg?.show">
    <div>
      <!-- <img src="@/assets/images/loading.gif" alt="" srcset="" /> -->
      <img src="/src/assets/img/loading-0.gif" alt="" srcset="" />
    </div>
  </div>
</template>
<script lang="ts">
export default {
  props: {
    msg: Object,
    aaa: Number,
  },
};
</script>
<style scoped lang="scss">
.loading {
  width: 100%;
  height: 100%;
  //   background-color: rgba(0, 0, 0, 0.2);
  position: fixed;
  top: 0;
  left: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000000000000000000000000;
  div {
    color: #fff;
    padding: 6px 15px;
  }
}
</style>

loading.ts

import { createApp, reactive } from 'vue'
import myLoad from '/@/components/loading/loading.vue'
// 引入公共js文件
import utils from "/@/assets/js/public/function";
const msg = reactive({
    show: false,
    title: '拼命加载中...'
})
const $loading = createApp(myLoad, {msg}).mount(document.createElement('div'))
// console.log($loading);
export const load = {
    show(title:any = '') { // 控制显示loading的方法
        msg.show = true
        msg.title = title
        document.body.appendChild($loading.$el)
    },
    hide(time:number = 1000) { // 控制loading隐藏的方法
        // 延迟 1秒
        utils.sleep(time).then(() => {
            msg.show = false
        });
    }
}
// export { load }
// export default {
//     install(app) {
//         // console.log(app);
//         // Vue.prototype.$http = axios
//         app.config.globalProperties.$loading = load
//     }
// }


utils.sleep


/**
     * @name: 程序停止执行时间(睡一会儿)
     * @author: camellia
     * @email: guanchao_gc@qq.com
     * @date: 2020-12-21
     * @param:  time    number  显示时间
     */
    sleep(time: number) {
        return new Promise((resolve) => setTimeout(resolve, time));
        // utils.sleep(500).then(() => {
        //     // 这里写sleep之后需要去做的事情
        //     console.log(router.currentRoute.value);
        // });
    }

 

调用:


1:引入


import { load } from "/@/components/loading/loading";


2:调用


load.show();
load.hide();

 


最终效果我这里就不做展示了,有兴趣可以自己尝试一下。

 


有好的建议,请在下方输入您的评论。


目录
相关文章
|
4天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
4天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
13天前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
30 7
|
14天前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
36 3
|
13天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
33 1
|
13天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
34 1
|
JavaScript
Vue的非父子组件之间传值
全局事件总线 一种组件间通信的方式,适用于任意组件间通信
|
缓存 JavaScript 前端开发
Vue Props、Slot、v-once、非父子组件间的传值....
Vue Props、Slot、v-once、非父子组件间的传值....
84 0
|
JavaScript
Vue中父子组件传值
先在⽗组件中给⼦组件的⾃定义属性绑定⼀个⽗组件的变量
|
JavaScript
vue 组件传值
vue 组件传值
82 0