收藏
回答

onPageScroll延迟响应比较严重

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

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

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

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


最后一次编辑于  2018-06-01  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • hao
    hao
    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
       })
    }
    },

    防止每次设值

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

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

    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)