解决UNI-APP "请注意 showLoading 与 hideLoading 必须配对使用" 问题

本文介绍了一种解决UniApp中Loading显示与隐藏不配对问题的方法,通过使用计数器来跟踪Loading的调用次数,确保了Loading的正确显示与隐藏,并在10秒后自动隐藏Loading,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接使用uni.showLoading()uni.hideLoading()经常会出现 "请注意 showLoading 与 hideLoading 必须配对使用" 的问题

原因:loading全局只创建一个,hideLoading可能会触发多次导致loading已经被隐藏,没有达到预期的配对效果,虽然不至于报错,但是警告提示也让人感觉很不舒服。

解决方案:

用计数器记录loading被调用次数,调用hideLoading时,当计数达到0,才隐藏loading;并且默认超过10秒自动隐藏loading避免长时间锁屏造成用户体验差的问题

loading.js

// 加载信息,带遮罩
let needLoadingRequestCount = 0;
let loadingTimer;
export function showLoading(title = '', mask = true) {
	if (needLoadingRequestCount === 0) {
		uni.showLoading({
			title,
			mask
		});

		// 最长10s自动关闭
		loadingTimer = setTimeout(() => {
			if (needLoadingRequestCount > 0) {
				uni.hideLoading();
			}
		}, 10000);
	}

	needLoadingRequestCount++;
}

// 隐藏遮罩
export function hideLoading() {
	if (needLoadingRequestCount <= 0) return;

	needLoadingRequestCount--;

	if (needLoadingRequestCount === 0) {
        loadingTimer && clearTimeout(loadingTimer);
		uni.hideLoading();
	}
}

使用(也可以挂在到Vue.prototype中)

import {
    showLoading,
    hideLoading
} from 'utils/loading'

showLoading();
hideLoading();

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值