当前位置: 首页 > article >正文

antdesignvue vue3全局loading

这里封装为loading.js文件,代码赋值即可用

import { createApp, h } from 'vue'
import { Spin } from 'ant-design-vue'
 
let instance = null
 
// 定义全屏遮罩样式
const style = {
    position: 'fixed',
    left: 0,
    top: 0,
    width: '100%',
    height: '100%',
    display: 'flex',
    justifyContent: 'center',
    alignItems: 'center',
    background: 'rgba(0, 0, 0, .5)',
    zIndex: 99999
}
 
function getInstance () {
    if (!instance) {
        const vn = createApp({
            data () {
                return {
                    show: false,
                    message: 'Loading...',
                    timeoutId: 'loader'
                }
            },
            unmounted () {
                if (instance && instance.$el) {
                    instance.$el.remove() // 当组件卸载时,从DOM中移除元素以避免内存泄漏
                }
            },
            methods: {
                loading (val, timeout) {
                    this.show = true
                    this.message = val || 'Loading...'
                    if (timeout) {
                        this.timeoutId = setTimeout(() => {
                            this.close()
                        }, timeout) // 超时时间单位为毫秒
                    }
                },
                close () {
                    clearTimeout(this.timeoutId) // 清除定时器
                    setTimeout(()=>{
                        this.show = false
                    },1000)
                }
            },
            render () {
                return this.show
                    ? h('div', { style }, [h(Spin, { tip: this.message })])
                    : null
            }
        })
        const ele = document.createElement('div')
        instance = vn.mount(ele)
        document.body.appendChild(ele)
    }
    return instance
}
 
export default {
    ...Spin,
    show (val, timeout) {
        getInstance().loading(val, timeout)
    },
    hide () {
        getInstance().close()
    }
}

封装完成后,可以再其他页面引入
import Spin from ‘./SpinLoader’

Spin.show(‘Loading…’,‘这里可以设置时间例如(1000,或者 ,2000之类的)’)

关闭loading
Spin.hide()

希望朋友们多多关照


http://www.kler.cn/a/466308.html

相关文章:

  • Hello 2025
  • OpenGL入门最后一章观察矩阵(照相机)
  • 集合划分.
  • S7-200采集频率信号
  • 在Mac电脑上搭建Gradle
  • 【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子
  • JavaScript的数据类型及检测方式
  • git时常混淆的操作的笔记
  • 低代码开发深度剖析:JNPF 如何引领变革
  • 数字PWM直流调速系统设计(论文+源码)
  • Docker 环境中搭建 Redis 哨兵模式集群的步骤与问题解决
  • 常见的九种二极管
  • 代码随想录算法训练营第五十二天|KM101.孤岛的总面积|KM102.沉没孤岛|KM103.水流问题|KM104.建造最大岛屿
  • SQLite简介:轻量级数据库入门
  • 57.在 Vue 3 中使用 OpenLayers 点击选择 Feature 设置特定颜色
  • 断舍离:通往心灵自由的五级阶梯
  • JavaScript系列(4)--数值类型专题
  • js获取下拉单选框的值和显示的值
  • springboot整合Quartz实现定时任务
  • 趣味编程:心形曲线
  • Linux环境(CentOs7) 安装 Node环境
  • 最近学习shader的一些总结
  • npm ERR! ECONNRESET 解决方法
  • Celeborn Spark 集成最新进展
  • 滤波器的主要参数
  • Flutter路由钩子