收藏
回答

怎么绝对地控制按钮不被重复点击?

我现在的控制方式是加了一个

buttonClicked 的参数,初始化为false,如下:

<button bindtap="submit" style="color:white;width:100%;height:90rpx;background-color:rgb(18, 172, 18);" disabled="{{buttonClicked}}">提交</button>

submit: function (event) {

if(!this.data.buttonClicked)

{

this.setData({ buttonClicked: true });

wx.navigateTo({

url: '../Home/Home'

})

}

}

onShow: function () {

this.setData({ buttonClicked: false })

}

但是当我重复点击的速度足够快时,程序就停留在当前界面不跳转了.............而且之后再怎么点击,都没有反应了。

我猜是因为重复点击的速度比程序执行的速度更快,导致buttonClicked还未设置成true,就已经有两次事件触发了。

怎样做到无论用户重复点击的速度有多快,都不会触发两次事件呢?

求高手解答~

回答关注问题邀请回答
收藏

3 个回答

  • Hasaki
    Hasaki
    2020-01-07

    1.buttonClicked 可以挂上下文上,不挂data上

    2.setData在逻辑层是同步的,在渲染层是异步的。


    可以试试这样:

    submit: function (event) {
      if(!this.buttonClicked){
        return;
      }
      this.buttonClicked=true;
      wx.navigateTo({
         url: '../Home/Home'
      })
    }
    
    onShow: function () {
     this.buttonClicked=false;
    }
    



    2020-01-07
    有用
    回复
  • null
    null
    2019-08-24

    已解决,原来是navigate到10次了...........

    2019-08-24
    有用
    回复
  • Why not?
    Why not?
    2019-08-24

    debounce了解一下:https://developers.weixin.qq.com/community/develop/article/doc/000a645d8b8ba0d8722863ef45bc13

    2019-08-24
    有用
    回复
登录 后发表内容
问题标签