91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解小程序如何避免多次點擊,重復觸發事件

發布時間:2020-10-06 12:45:39 來源:腳本之家 閱讀:314 作者:honey緣木魚 欄目:web開發

作為前端開發,我們經常會遇到的場景,比如用戶點擊獲取驗證碼按鈕時,沒有反應,大部分用戶都會接著點擊,這就會造成用戶收到多條驗證碼,這是因為后臺api請求比較慢,而客戶端體驗又做得不到位,導致用戶以為沒點擊到或者是頁面假死,在上次請求還沒處理完,就再次點擊按鈕。這對于我們開發來說,這是bug。

如何解決或避免這個問題呢?一般來說有兩種情況。

1、點擊事件是執行網絡請求(提交評論,驗證碼,支付)

這種情況下可以在請求執行之前顯示一個模式的加載框,請求完成后再關閉加載框。

由于小程序在1.1.0版本基礎庫才支持wx.showLoading,因此需要對低版本做兼容處理,代碼如下:

 function showLoading(message) {
 if (wx.showLoading) {
  // 基礎庫 1.1.0 微信6.5.6版本開始支持,低版本需做兼容處理
  wx.showLoading({
   title: message,
   mask: true
  });
 } else {
  // 低版本采用Toast兼容處理并將時間設為20秒以免自動消失
  wx.showToast({
   title: message,
   icon: 'loading',
   mask: true,
   duration: 20000
  });
 }
}
 
function hideLoading() {
 if (wx.hideLoading) {
  // 基礎庫 1.1.0 微信6.5.6版本開始支持,低版本需做兼容處理
  wx.hideLoading();
 } else {
  wx.hideToast();
 }
}

我們可以將顯示加載框和關閉加載框的代碼放在公共的代碼里面比如util,然后在使用時直接調用即可。

function request() {
 util.showLoading('加載中...');
 wx.request({
  url: app.globalData.host + 'xxx',
  data: {...},
  method: 'GET',
  success: function (res) {
   util.hideLoading()
   ...
  },
  fail: function (res) {
   util.hideLoading()
   ...
  }
 })
}

2、點擊事件是頁面跳轉

當點擊事件需要頁面跳轉時,不太適合顯示加載框,但小程序的頁面跳轉并不是很快,如果不作處理又會導致用戶反復點擊打開多個頁面,這里可以使用限制按鈕或控件的點擊間隔的方式處理,同樣可以將這個方法放到公共的代碼里面比如util,然后在使用時直接調用即可。

function buttonClicked(self) {
 self.setData({
  buttonClicked: true
 })
 setTimeout(function () {
  self.setData({
   buttonClicked: false
  })
 }, 500)
}

首先需要在頁面對應的js文件里面增加一個buttonClicked數據對象,然后在點擊事件里面調用上述方法。

Page({
 data: {
  buttonClicked: false
 },
 click: function (e) {
  util.buttonClicked(this);
  var id = e.currentTarget.dataset.id;
  wx.navigateTo({
   url: '../detail/detail?id=' + id
  })
 },
})

另外,在wxml的點擊控件中通過buttonClicked判斷是否可以點擊,可以用bindtap也可以用disabled

<view bindtap="{{!buttonClicked?'click':''}}" data-id="{{id}}" />
<button bindtap="{{!buttonClicked?'click':''}}" data-id="{{id}}" />
<button bindtap="click" disabled="buttonClicked" data-id="{{id}}" />

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂尔多斯市| 门源| 大洼县| 吉木乃县| 石泉县| 周至县| 盈江县| 乌拉特中旗| 山东省| 呼伦贝尔市| 左贡县| 左云县| 罗田县| 中阳县| 临安市| 望城县| 龙里县| 铅山县| 襄城县| 梁山县| 清丰县| 桐乡市| 陵水| 顺义区| 宜兰市| 兴仁县| 商河县| 清镇市| 弥渡县| 荆州市| 大丰市| 三都| 雅江县| 景德镇市| 东方市| 荆州市| 镇赉县| 开化县| 永宁县| 长汀县| 镶黄旗|