收藏
回答

500条数据,修改其中一项,渲染太慢

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug setData 客户端 6.5.3 2.7.1

现有500条数据,在页面中用wx:for进行渲染

现在修改其中一项数据,需要渲染5秒钟


let key = "dataArray[5].count";

this.setData({

    [key]: 10

})



求大神帮忙如何优化?

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

3 个回答

  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2019-06-03

    即使只修改其中一项,时间开销还是和页面或自定义组件中的总节点数量相关的。如果 500 项中每一项都很大的话,确实也会很慢。


    不过慢至 5s 还是不太可能发生的。请问是怎么测算时间的呢?

    2019-06-03
    赞同 1
    回复 3
    • 吉思达
      吉思达
      2019-06-03

      也不是每次都是5s,最长的大概是5S左右

      let a = new Date().getTime();

      this.setData({

          [key]: 10

      }, function() {

      let b =  new Date().getTime();

      console.log(b-a);

      })


      2019-06-03
      回复
    • 小程序技术专员-LastLeaf
      小程序技术专员-LastLeaf
      2019-06-03回复吉思达

      setData 的回调是保证发生在被应用到界面之后,可能会比实际渲染完成时间略晚,所以这个方式测出来的时间偏长。


      特别地,如果是在小程序启动时(比如 onLoad 时)用这个方法测量,由于 onLoad 触发时间很早(大约相当于小程序 loading 界面开始展示的时候),渲染完成的时间相对而言会晚很多,所以测出来的时间会特别长。

      2019-06-03
      回复
    • 吉思达
      吉思达
      2019-06-03回复小程序技术专员-LastLeaf

      谢谢

      2019-06-03
      回复
  • c小仕
    c小仕
    2019-06-03

    加个加载对话框,哈哈哈

    2019-06-03
    赞同
    回复
  • 铭锋科技
    铭锋科技
    2019-06-03

    请提供能复现问题的代码片段


    不会做代码片段?

    https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2019-06-03
    赞同
    回复
登录 后发表内容