收藏
回答

bindscroll 延迟怎么办

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug scroll-view 客户端 7.0.3 2.6.1

想要 实现滚动页面购物车向右滑动隐藏,停止滚动向左滑动显示,但是bindscroll有延迟,是因为造成了大量的setData吗

js代码:

var start = e.detail.scrollTop;

this.setData({

iSscroll: true

})

clearTimeout(timer);

var timer = setTimeout(() => {

var end = e.detail.scrollTop;

if (end == start) {

this.setData({

iSscroll: false

})

console.log('停止滚动了');

}

}, 100);


最后一次编辑于  03-05  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 小打卡
    小打卡
    03-05

    100ms调用一次setData。清除定时的方法似乎这么写没有用吧。每次调用都会生成一个新的time_id.这样肯定不行吧。

    03-05
    赞同
    回复 1
    • soul
      soul
      03-06

      那请问有什么好的办法吗

      03-06
      回复
  • 董博文
    董博文
    03-05

    试试这样

    this.data.count = 0

    onScroll() {

        this.data.count += 1

        if (this.data.count == 20) {

            this.data.count = 0

            this.setData({})

        }

    }

    03-05
    赞同
    回复 2
    • soul
      soul
      03-06

      不行的,停止滚动count也不一定到20呢

      03-06
      回复
    • 董博文
      董博文
      03-06回复soul

      if (!this.data.isScroll) {

      this.setData({

      isScroll: true

      })

      } else {

      clearTimeout(this.data.timer)

      this.data.timer = null

      this.data.timer = setTimeout(() => {

      this.setData({

      isScroll: false

      })

      console.warn('stop scroll')

      }, 500)

      }

      应该能达到你要的效果吧

      03-06
      回复