uni-app中uni.showLoading在uni.on下不生效

uni-app中uni.showLoading在uni.on下不生效

类别 信息
产品分类 uniapp/H5
PC开发环境 Windows
操作系统版本 10
HBuilderX类型 正式
HBuilderX版本 3.2.9
浏览器平台 Chrome
浏览器版本 1
项目创建方式 HBuilderX

示例代码:

uni.$on('uAvatarCropper', path => {  
    uni.showLoading({  
        mask:true,  
        title: '正在上传,请稍后'  
    });  

    // uni.showLoading({  
    //  mask:true,  
    //     title: '正在上传,请稍后'  
    // });  
})

操作步骤:

1

预期结果:

1

实际结果:

1

bug描述:

单独搬出来 可以显示,放到uni.$on里不显示


更多关于uni-app中uni.showLoading在uni.on下不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

怎么没有人?这么明显的BUG

更多关于uni-app中uni.showLoading在uni.on下不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个为什么没人理啊

未复现此问题。 简单的逻辑,新建个空项目测试看看,能否复现你的问题? 不能的话,你需要排查出来具体你哪个页面,哪部分代码导致的。 你按照正确的排错步骤,高概率会发现是你自己的问题,然后直接解决问题。框架一般不会有超级明显的问题。 如果测试确实发现问题,请上传一个能复现此bug的完整demo(上传附件)。 一旦我们能复现问题: 1.会紧急安排修复 2.会给你的社区账号加分(分数越高的用户享,有越高的bug审查和建议采纳的优先权重) 更多社区规则详情:https://ask.dcloud.net.cn/article/38139

已经上传了 在下楼

这个是新建的纯净的复现uniapp项目。 解压缩以后里面有个请看我文本文档有详细介绍

show页面还没触发就被你关闭了,延迟一下试试 https://ask.dcloud.net.cn/article/36010

老哥能不能看下我帖子vue3的bug是啥原因

明白了,但是uview也是你们官方的组件库把 他的 头像裁剪的组件里就没有延迟处理。 uni.$emit(‘uAvatarCropper’, path); this.$u.route({ type: ‘back’ });

回复 8***@qq.com: 不是,你联系uview作者吧

请问解决了嘛 我遇到同样的问题

加个100ms的延迟

回复 b***@checkshirt-ai.com: 请教下 哪里加延迟啊

在 uni-app 中,uni.$on 是全局事件监听,通常用于跨页面通信。你遇到的问题——uni.showLoadinguni.$on 回调中不生效——通常与 执行时机和异步处理 有关。

可能的原因和解决方案:

  1. 页面渲染时机问题
    uni.showLoading 依赖于当前页面的渲染上下文。如果 uni.$on 的回调在页面尚未完全就绪时触发(例如在 onLoad 之前),showLoading 可能无法正常显示。
    解决:确保事件触发时页面已渲染完成。可以在 onReady 后再监听事件,或使用 setTimeout 包裹 showLoading 以放入下一个事件循环:

    uni.$on('uAvatarCropper', path => {
        setTimeout(() => {
            uni.showLoading({ mask: true, title: '正在上传,请稍后' });
        }, 0);
    });
    
  2. H5 平台的异步限制
    在 H5 环境中,uni.$on 的回调可能因异步操作(如接口请求)被阻塞,导致 UI 更新不及时。showLoading 需要主线程空闲才能渲染。
    解决:将 showLoading 放在异步操作之前,并确保后续逻辑(如上传)异步执行:

    uni.$on('uAvatarCropper', async path => {
        uni.showLoading({ mask: true, title: '正在上传,请稍后' });
        await uploadFile(path); // 假设上传函数
        uni.hideLoading();
    });
回到顶部