uniapp的mescroll-body组件与页面切换冲突.mescroll-body组件下拉异常,mescroll-body组件页面跳转回来后下滑屏幕直接触发了下拉刷新.

简介: uniapp的mescroll-body组件与页面切换冲突.mescroll-body组件下拉异常,mescroll-body组件页面跳转回来后下滑屏幕直接触发了下拉刷新.

问题背景:


uniapp一个A页面中包含下拉刷新组件mescroll-body,当A页面滚动到某个位置然后进行了页面跳转,跳转到页面B,在B页面点击返回,返回A页面后,页面此时位置处于跳转去B页面前的位置,但是此时下拉页面,会触发下拉刷新组件的下拉刷新事件, 但是实际上下拉刷新事件应该在页面滚动条处于页面顶部才能出触发. 怎么解决这个bug呢?


分析:


个人认为应是页面跳转影响了mescroll-body组件对当前页面位置的判断. 在页面跳转后回来,mescroll-body组件以为页面回到了顶部,然后放开了下拉刷新,所以需要我们自己判断是否禁用和开启下拉刷新


解决思路:


因为我的下拉刷新事件是要在页面处于最顶部的时候才能触发的,而且,页面从B页面返回A页面:页面A的位置还是和跳转走之前相同,所以,只需要知道页面跳转到A之前是否处于页面顶部,就知道该不该禁用页面滚动事件. 如果跳走前在页面顶部,那回来的时候也在页面顶部,就放开下拉刷新事件,如果页面滚动了距离,则说明页面此时并没处于顶部,则禁用下拉刷新事件.


解决代码


首先:在A页面监听页面滚动事件,将页面滚动的距离保存起来,并且编写代码,如果页面滚动距离大于0,说明页面不在顶部,禁用下拉刷新组件.

  // 页面滚动事件,与其他生命周期平级位置
    onPageScroll(e) {
      console.log(e.scrollTop)
      this.scrollTop = e.scrollTop
      if (this.scrollTop>0) {
          this.mescroll.optDown.isLock=true
          console.log('禁用下拉刷新事件')
        }else{
          this.mescroll.optDown.isLock=false
          console.log('解开下拉刷新事件')
        }
    },


页面跳转走之前将页面滚动距离缓存起来:

uni.setStorageSync('scroolTop',this.scrollTop)


页面跳转回来后,判断当缓存的页面滚动距离是否大于0,此事可以借助uniapp的onshow生命周期进行编写代码,将逻辑写到onshow中.

      onShow() {
      this.scrollTop=uni.getStorageSync('scroolTop')
        if (this.scrollTop>0) {
          this.mescroll.optDown.isLock=true
          console.log('禁用下拉刷新事件')
        }else{
          this.mescroll.optDown.isLock=false
          console.log('解开下拉刷新事件')
        }
    },

至此,解决了此下拉刷新组件与页面跳转导致的冲突问题.

关于怎么动态禁用和解开mescroll-body组件的下拉刷新事件,看我写的这篇文章.:uniapp动态禁用mescroll-body组件的下拉刷新,或者动态禁用mescroll-body组件的上拉加载


相关文章
|
2月前
|
数据挖掘
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
89 10
|
2月前
|
搜索推荐 JavaScript 数据可视化
uniapp/vue个性化单选、复选组件
uniapp/vue个性化单选、复选组件
104 5
|
2月前
|
数据可视化 大数据 API
低代码可视化开发-uniapp新闻跑马灯组件-代码生成器
低代码可视化开发-uniapp新闻跑马灯组件-代码生成器
101 2
|
2月前
|
存储 API 数据库
uniapp APP自动更新组件
uniapp APP自动更新组件
75 1
|
2月前
Uniapp矩阵评分组件
Uniapp矩阵评分组件
53 1
|
2月前
|
移动开发 编解码 数据可视化
低代码可视化-uniapp SliderRange区间组件-代码生成器
SliderRange区间组件是一种用户界面元素,允许用户通过拖动滑块选择数值范围。组件支持微信小程序、H5和App,具有高度可定制性、响应式设计和多种事件处理功能。适用于价格筛选、音量调节等场景。代码实现包括滑动区域、滑块、事件处理等部分,支持可视化配置步长、颜色等属性。使用时需注意选择合适步长、提供清晰标签和考虑无障碍设计。
39 0
|
2月前
|
编解码 数据可视化 API
DIY可视化UniApp表格组件
DIY可视化UniApp表格组件
44 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
UniApp手机滑块验证组件代码生成器
UniApp手机滑块验证组件代码生成器
73 0
|
2月前
|
前端开发 JavaScript
uniapp纯CSS实现圆形进度条组件
uniapp纯CSS实现圆形进度条组件
100 0
|
5月前
|
移动开发 前端开发 小程序
uniapp内置组件uni.navigateTo跳转后页面空白问题解决
【7月更文挑战第1天】uniapp内置组件uni.navigateTo跳转后页面空白问题解决
125 4