先说一下业务场景
首页是个很长的商品列表页 , 通过上拉加载数据,当用户翻页(也就是上拉加载)后应出现回到顶部按钮。
然后 开始做法是onPageScroll监听滚动 判断当前位置setData一个标志符通过标志符动态显示隐藏回到顶部按钮。
错误代码:
onPageScroll(e){
if(e.scrollTop > 700){
this.setData({floorstatus:true})
}else{
this.setData({floorstatus:false})
}
}
这样会导致setData在一定时间内会被反复触发很多次,从而导致setData拖沓了下面的业务代码,导致dom卡顿延时渲染!
解决方案:
onPageScroll: function (e) {
if (e.scrollTop > 700) {
this.flagPop = true
} else {
this.flagPop = false
}
},
给最外层的父元素bindtouchend,bindtouchstart事件
showFlagPop(e){
if(e.target.offsetTop>100||this.flagPop){
this.setData({
floorstatus:true
})
}else{
this.setData({
floorstatus:false
})
}
},
完美解决~~
onPageScroll监听卡顿,导致部分dom延迟很久才渲染
最新推荐文章于 2024-04-11 16:02:26 发布