收藏
回答

分页下拉加载商品列表时,setData的数据渲染很慢(安卓)

第一次进去加载20条商品列表时,在接口请求成功时,记录下时间,在setData的函数里记录下成功渲染的时间。刚进去时这两个时间差距不大。当下拉到底获取第二页数据,并设置setData时,两个时间差有时几秒甚至10秒以上,导致接口请求成功,但页面的数据渲染很慢


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

2 个回答

  • ღ᭄Fall In Dream🍃࿐
    ღ᭄Fall In Dream🍃࿐
    2018-12-24

    我也是这个问题,渲染速度甚至等到了50秒,找不到问题在哪里。

    2018-12-24
    赞同
    回复 2
    • 相运龙
      相运龙
      2018-12-25

      你是不是在页面滚动时频繁的设置setData 了

      2018-12-25
      回复
    • ღ᭄Fall In Dream🍃࿐
      ღ᭄Fall In Dream🍃࿐
      2018-12-25回复相运龙

      没有,就是滚动的时候请求数据,然后重新setData请求回来的数据。

      2018-12-25
      回复
  • 痛快科技
    痛快科技
    2018-12-19

    第二次渲染慢的原因,应该是因为不仅渲染了第二页的数据,还将第一页的数据也放进了data中又渲染了一遍,相当于渲染了两倍的数据量,渲染速度会成倍增加的。

    1、建议获取第二页数据时,只在页面渲染第二页的数据,第一页的数据不需再放进data中再渲染一次。

    2、页面中可以加上wx:key,可以加快渲染速度。


    2018-12-19
    赞同
    回复 3
    • 相运龙
      相运龙
      2018-12-20

      获取第二页数据时,如何只在页面渲染第二页的数据,并且保证第一页数据还在页面上


      wx:key是这种写法吧

      2018-12-20
      回复
    • 痛快科技
      痛快科技
      2018-12-20回复相运龙

      试一下下面的方式能否解决你的问题,先用一个obj存放一下你要setData的第二页的值,然后最后再setData这些数据。

      /**

          * result 后台获取的第二页的数据

          * obj 盛放要setData的数据

          * item 数组每一项的值

          * productlist 数组变量名

          * index 当前项的数组下标

          */

      for (var i in result) {

      var obj = {};

      obj['productlist[' + index + ']'] = item;

      }

      that.setData(obj);


      2018-12-20
      回复
    • 痛快科技
      痛快科技
      2018-12-20回复相运龙

      wx:key的写法是正确的。

      2018-12-20
      回复