收藏
评论

【优化】解决swiper渲染很多图片时的卡顿

相信各位在开发的时候应该有遇到这样一个场景,比如商品的图片浏览,有时图片的浏览会很大,多的时候达几百张或上千张,这样就需要swiper里需要很多swiper-item,如此一来渲染的时候就会很消耗性能,渲染时会有一大段的空白时间,有时还会造成卡顿,体验非常差,下面给大家介绍一下我的解决方案。


首先是wxml结构:




js:




主要是利用current属性,swiper里面只放3个swiper-item,要显示的图片放在第二,第一和第三放的是加载的动画背景,步骤如下:


1. 将请求到的数据存入一个数组picListAll内,这里不需要setData,只需要在data外面定义一个变量就行了,以减少渲染性能。

2. 把要显示的图片路径赋值给picUrl,

3. 切换的时候根据bindchange获取current属性,当current改变时判断当前图片在picListAll的index,根据index拿到图片再赋值给picUrl


主要实现步骤就是以上3 步,比较简单,要注意的是当切换到第一张和最后一张的时候要判断一下,把loding动画去掉,请求的时候还可以传入index参数以显示不同的图片,方便从前一页点击图片进入到此页面时能定位到该图片,例子里我是自己mock数据的,只是为了展示,如果你有服务器的话可以弄几百张看看效果,对比直接渲染和用以上方式渲染的差异。当然,这只是我的解决方案,如果各位有更好的方案欢迎一起讨论,一起进步.


                                                                                                                                                                                                                                      系甘先,得闲饮茶


完整代码:https://github.com/HaveYuan/swiper

最后一次编辑于  2019-01-25
收藏

11 个评论

  • NaN
    NaN
    2019-01-08

    测试了一下  明显快很多 感谢大佬分享

    2019-01-08
    赞同
    回复 1
    • var 友原
      var 友原
      2019-01-08

      谢谢

      2019-01-08
      回复

正在加载...

登录 后发表内容