收藏
回答

onPageScroll延迟响应比较严重

框架类型 问题类型 终端类型 操作系统 微信版本 基础库版本
小程序 Bug 微信iOS客户端 Android 6.6.6 2.0.9

当前页面数据和接口有4-5个,数据量也大,滚动事件要很慢才响应,

--需求是: 滚动到某个位置,获取滚动的位置判断,把某一元素position:fixed;定位悬浮顶部,

--结果是:需要几秒才响应


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

8 个回答

  • 澜象云店 叶辉
    澜象云店 叶辉
    05-19

    正确使用方法是

    this._observer = wx.createIntersectionObserver(this)

        this._observer

          .relativeTo('.container')

          .observe('.ball', (res) => {

            console.log(res);

            this.setData({

              appear: res.intersectionRatio > 0

            })

          })


    05-19
    有用
    回复
  • Tammy
    Tammy
    04-22

    请问最后解决了 吗?我也遇到这个问题了

    04-22
    有用
    回复
  • 闯天涯
    闯天涯
    2019-11-20

    onPageScroll里面设置一个标志参数,结合handletouchend方法,完美解决

    2019-11-20
    有用
    回复 1
  • hao
    hao
    2019-08-27
    onPageScroll: function (e) {
    if (e.scrollTop > this.data.sectionHeaderLocationTop) {
    if(!this.data.is_set){
    console.log('set fixed')
    this.setData({
    fixed: true,
           is_set:true
         })
    }
    }
    if(e.scrollTop == 0){
    console.log('clear fixed')
    this.setData({
    fixed: false,
         is_set:false
       })
    }
    },

    防止每次设值

    2019-08-27
    有用
    回复
  • Marvin
    Marvin
    2019-08-19
    尝试着函数每调用n次,再执行一次setData。这样基本上可以解决低效的问题。
    2019-08-19
    有用
    回复
  • 崔亚杰
    崔亚杰
    2019-04-30

    在Android上感觉是页面停止滑动之后才触发onPageScroll事件,并且是过程中所有的状态都触发了

    2019-04-30
    有用
    回复
  • 高鹏岳
    高鹏岳
    2018-08-10

    一模一样的问题,持续关注。

    2018-08-10
    有用
    回复 1
    • 聂芳
      聂芳
      2018-09-21

      没用,原生小程序的setData这个性能问题无法解决,只能换成mpvue或者react写法,才能解决setData每次更新全量数据问题,没有diff比较

      2018-09-21
      回复
  • struggle
    struggle
    2018-06-05

    老铁  有没有找到解决方案   我这边也遇到了延迟问题 延迟的比较严重

    2018-06-05
    有用
    回复 10
    • 聂芳
      聂芳
      2018-06-05

      没有啊,重写接口,前端不存这么多数据了,之前是所有数据一次性给过来,存在前端,分不同数组,现在只能改成多接口了,刷选条件不存前端了

      2018-06-05
      回复
    • 官方
      官方
      2018-07-27回复聂芳

      在安卓机上还是有延迟效果。。。有更好的解决办法吗?

      2018-07-27
      回复
    • 聂芳
      聂芳
      2018-07-28回复官方

      没有,我这也没存储的数据比较多,打算重新写接口了,前端不存大量数据,看看行不行


      2018-07-28
      回复
    • 刘
      2018-09-06回复官方

      朋友,有解决吗,在安卓上

      2018-09-06
      回复
    • 尤里.博伊卡
      尤里.博伊卡
      2018-11-09回复

      不要频繁调用setData,每次触发滚动事件都去调用setData肯定不行,因为这个内部要处理视图渲染更新等等其他复杂逻辑,尽量使用页面的的滚动监听事件,不用scroll-view; 
      方法:要结合debounce延时避免短时间内高频调用setData



      2018-11-09
      回复
    查看更多(5)
登录 后发表内容