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
怎么没有人?这么明显的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.showLoading 在 uni.$on 回调中不生效——通常与 执行时机和异步处理 有关。
可能的原因和解决方案:
-
页面渲染时机问题
uni.showLoading依赖于当前页面的渲染上下文。如果uni.$on的回调在页面尚未完全就绪时触发(例如在onLoad之前),showLoading可能无法正常显示。
解决:确保事件触发时页面已渲染完成。可以在onReady后再监听事件,或使用setTimeout包裹showLoading以放入下一个事件循环:uni.$on('uAvatarCropper', path => { setTimeout(() => { uni.showLoading({ mask: true, title: '正在上传,请稍后' }); }, 0); }); -
H5 平台的异步限制
在 H5 环境中,uni.$on的回调可能因异步操作(如接口请求)被阻塞,导致 UI 更新不及时。showLoading需要主线程空闲才能渲染。
解决:将showLoading放在异步操作之前,并确保后续逻辑(如上传)异步执行:uni.$on('uAvatarCropper', async path => { uni.showLoading({ mask: true, title: '正在上传,请稍后' }); await uploadFile(path); // 假设上传函数 uni.hideLoading(); });


