旋律阿萨德
旋律阿萨德
  • 发布:2026-06-12 09:37
  • 更新:2026-06-12 09:37
  • 阅读:29

先调用了uni.showLoading然后 uni.showToast uni.hideLoading(); uni.showToast 会马上消失

分类:uni-app

运行在微信小程序中;使用wx.也是有问题;在微信开发者工具可以显示载中和标题;手机上不会显示

uni.showLoading({
title: '加载中'
});

setTimeout(function () {
uni.showToast({
title: '标题',
duration: 2000
});
uni.hideLoading();
}, 2000);

先显示加载中,2秒后消失不会显示标题,有这个问题之前遇到过,1.hideLoading放前面 uni.hideLoading(); uni.showToast({
title: '标题',
duration: 2000
});2.uni.showToast({
title: '标题',
duration: 2000
});不要uni.hideLoading();文档中也没有写;

2026-06-12 09:37 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这是微信小程序底层机制导致的问题,不是 uni-app 的 bug。

问题原因

在微信小程序中,showToastshowLoading 共用同一个底层原生组件,它们会相互覆盖。当调用 uni.hideLoading() 时,微信原生层会把整个提示组件关闭,导致刚刚显示的 toast 也跟着一起消失了。

这个问题在微信开发者工具中可能不会出现,但在真机调试和线上版本中会很明显。

解决方案

最简单的办法是调整调用顺序,先 hideLoading,再 showToast

uni.showLoading({  
    title: '加载中'  
});  

setTimeout(function () {  
    uni.hideLoading();  // 先关闭 loading  
    // 稍微延迟一下再显示 toast,确保 loading 完全关闭  
    setTimeout(() => {  
        uni.showToast({  
            title: '标题',  
            duration: 2000  
        });  
    }, 30);  // 30ms 的延迟通常足够了  
}, 2000);

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

如果 30ms 不够稳定,可以适当增加延迟到 50ms 或 100ms。这个延迟是为了确保微信原生层完全关闭 loading 后再显示 toast,避免两者冲突。

其他方案参考

如果是在 App 端遇到类似问题,可以使用 plus API 来替代,因为 plus 的 toast 和 loading 是独立实现的,不会相互影响:

// App 端使用 plus.nativeUI.toast  
plus.nativeUI.toast('标题');

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

相关参考:plus.nativeUI.toast 文档

内容为 AI 生成,仅供参考

要回复问题请先登录注册