uni-app警告 “请注意 showLoading 与 hideLoading 必须配对使用”

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app警告 “请注意 showLoading 与 hideLoading 必须配对使用”
在请求数据的时候使用 uni.showLoading,数据请求完毕也使用了 uni.hideLoading,但是一直警告 “请注意 showLoading 与 hideLoading 必须配对使用”。

16 回复

我也是,用了hide还是警告,看着一片黄,很不舒服


强迫症,哈哈,我也是搜索【 [system] 请注意 showToast 与 hideToast 必须配对使用】过来的。

提示是检测使用的show与hide是否成对得出的,目的是避免出现问题。 如检查无问题,可以忽略。

4月5月的时候是没有这个这个问题的 这个是可以忽略 但是在控制台很难看

显示这个没有意义

comolete中调用的,uni-app好像检测不出来

那是因为,你在请求之前调用的uni.showLoading,是在主线程里,而请求接口大多数是子线程,子线程里它找不到主线程的uni.showLoading,而主线程里它同样找不到子线程的uni.hideLoading 应该是这样…

哦还有一个可能就是,你在uni.hideLoading和uni.showLading之间又用了uni.showToast等uni的弹窗封装组件,导致在uni.hideLoading之前已经关闭了弹窗

回复 三片创可贴: 真相了,我就是请求完全结束前调用了uni.showToast提示了加载“加载成功”之类的字眼,所以导致uni.hideLoading没有被调用是这个意思吗大哥?

回复 三片创可贴: 有没有解决呢

都2023了还没解决 逼死强迫症

哈哈,我也是搜索“[system] 请注意 showLoading 与 hideLoading 必须配对使用”过来看的!这么早的问题了,怎么一直到现在还存在?怎么解决呀?

都2025了还没解决,不用解决了

因为showLoading和showToast使用的同一个实例,当你使用showLoading之后直接调用showToast就会提示这个了,如果想要避免提示就必须在showToast之前调用hideLoading

因为showLoading和showToast使用的同一个实例

在uni-app开发中,showLoadinghideLoading是用于显示和隐藏加载提示框的API。如果这两个API没有正确配对使用,就可能导致加载提示框无法正常消失,从而影响用户体验。为了确保showLoadinghideLoading的配对使用,我们通常会在显示加载提示框后立即进行某个操作(如网络请求),并在操作完成后隐藏加载提示框。

以下是一个简单的代码示例,展示了如何在uni-app中正确配对使用showLoadinghideLoading

// 假设我们有一个页面,需要在页面加载时发送一个网络请求,并显示加载提示框
Page({
  onLoad: function() {
    // 显示加载提示框
    uni.showLoading({
      title: '加载中...',
      mask: true // 是否显示透明蒙层,防止触摸穿透
    });

    // 发送网络请求
    uni.request({
      url: 'https://api.example.com/data', // 替换为你的API地址
      method: 'GET',
      success: (res) => {
        // 请求成功,处理返回的数据
        console.log('请求成功:', res.data);

        // 隐藏加载提示框
        uni.hideLoading();

        // 更新页面数据
        this.setData({
          data: res.data
        });
      },
      fail: (err) => {
        // 请求失败,处理错误
        console.error('请求失败:', err);

        // 隐藏加载提示框,并显示错误信息
        uni.hideLoading();
        uni.showToast({
          title: '请求失败,请稍后再试',
          icon: 'none'
        });
      }
    });
  }
});

在这个示例中,我们在页面加载时首先调用uni.showLoading显示加载提示框,然后发送一个网络请求。网络请求的回调函数中,无论请求成功还是失败,都会调用uni.hideLoading来隐藏加载提示框。这样就确保了showLoadinghideLoading的配对使用。

此外,为了避免因异常或错误导致hideLoading没有被调用,我们可以在页面的onUnloadonError生命周期函数中添加额外的hideLoading调用,以确保在页面卸载或发生错误时也能隐藏加载提示框。但请注意,这种做法应谨慎使用,因为它可能会隐藏掉因其他原因正在显示的加载提示框。

onUnload: function() {
  uni.hideLoading(); // 页面卸载时隐藏加载提示框(谨慎使用)
},
onError: function(err) {
  console.error('页面错误:', err);
  uni.hideLoading(); // 页面发生错误时隐藏加载提示框(谨慎使用)
}
回到顶部