在长列表下,微信小程序setData的性能比较堪忧
通常情况下,setData是进行了全部的数据重新渲染
结合网上各个大佬的解决方案,以下方案个人认为简单粗暴
分页请求,对服务器压力相对较小。
分页增量渲染显示,对setData的压力也较小。
js回调里,将页面的page作为数组的下标来实现增量渲染,而不是将数据全部重新渲染一次。
that.setData({
["List[" + page + "]"] :resList
})
wxml文件里做一个双重循环,达到增量渲染的效果,实测数万级列表也不会卡顿。IOS和Android的wechat版本均为7.06测试过。
<block wx:for="{{List}}" wx:for-item="list-item">
<block wx:for="{{list-item}}" wx:for-item="list">
<view class="tab-content">
{{list.content}}
</view>
</block>
</block>