想要 实现滚动页面购物车向右滑动隐藏,停止滚动向左滑动显示,但是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);
请教下,如果是左右双联动(像电商类分类页面,左侧是一级分类,右侧是二级分类是)。右侧内容滚动时,对应滚动并选中到左侧一级分类,如果用定时器的这种方式,滚动稍快的话,滚动到左侧一级分类,会有一跳一跳的效果。是否还有其它的优化方案?
试试这样
this.data.count = 0
onScroll() {
this.data.count += 1
if (this.data.count == 20) {
this.data.count = 0
this.setData({})
}
}
不行的,停止滚动count也不一定到20呢
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)
}
应该能达到你要的效果吧
100ms调用一次setData。清除定时的方法似乎这么写没有用吧。每次调用都会生成一个新的time_id.这样肯定不行吧。
那请问有什么好的办法吗