解決微信小程序真機 showToast 不顯示

花了一周多,終于把公司小程序做出來了。真機上測試發(fā)現(xiàn)調(diào)用 showToast 不顯示,或者閃一下就沒了。經(jīng)過查找,發(fā)現(xiàn)是與 wx.showLoading 沖突了,兩者調(diào)用的是同個框。

先放上我的錯誤代碼

  // 請求事件
  requestEvent: function() {

    wx.showLoading({
      title: '正在加載中',
    })
    wx.request({
      url: '',
      success: function(res) {
        wx.showToast({
          title: '成功',
          duration: 2000
        })
      },
      fail: function() {
        wx.showToast({
          title: '失敗',
          duration: 2000
        })
      },
      complete: function() {
        wx.hideLoading()
      }
    })
  }

我是想請求接口后,將加載框隱藏掉,再顯示 toast 提示。但是真機上發(fā)現(xiàn) showToast 不顯示。正如上面所說,兩者調(diào)用的是同個框。現(xiàn)在,我們分析整個流程:

  1. 首先顯示 loading 框;
  2. 然后調(diào)用 success / fail,彈框的內(nèi)容由 loading 變成了 toast;
  3. 最后調(diào)用 onComplete 時,hideLoading 將彈框隱藏掉了;

很明顯,我們最終把 toast 框隱藏掉了。知道原因后,改起來就容易了。先調(diào)用 wx.hideLoading(),再調(diào)用 wx.showToast() 即可。

建議

  1. 若是在網(wǎng)絡(luò)請求前需要調(diào)用 wx.showLoading,建議在該 success 和 fail 回調(diào)函數(shù)內(nèi)第一行就調(diào)用 wx.hideLoading。即使暫時不需要 showToast 操作。因為以后需要在回調(diào)函數(shù)內(nèi)添加 toast 時, 就不用再管什么順序問題了;
  2. 當(dāng) toast 和 loading 同時使用,多注意兩者的調(diào)用順序;

如下是正確代碼:

  // 請求事件
  requestEvent: function() {

    wx.showLoading({
      title: '正在加載中',
    })
    wx.request({
      url: '',
      success: function(res) {
        wx.hideLoading()
        wx.showToast({
          title: '成功',
          duration: 2000
        })
      },
      fail: function() {
        wx.hideLoading()
        wx.showToast({
          title: '失敗',
          duration: 2000
        })
      }
    })
  }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容