解决安全生产知识题库小程序加载超大数据无法渲染的问题

news/2024/11/24 1:40:47/

遇到问题

在搭建安全生产知识竞赛题库小程序的时候,由于题库的题量太大了,一次性加载setData或者多次concat后setData,其实它俩都是一次性setData,这样就会造成加载超大数据无法渲染空白的问题。

安全生产知识竞答

解决微信小程序加载超大数据无法渲染空白的问题

官方文档中

Page.prototype.setData(Object data, Function callback)

setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。

单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

文档中写的是单次设置,但咋使用过程中发现分批次设置达到这个值也依然无法渲染数据,此时的解决方案,一般就是只显示能渲染的条数,或改成翻页,不能无限加载更多,从此看来,还是不够理想,查了半天没有找到答案,特此把解决方案分享给大家。

废话不多说答案就是官方提供了一个加载更大数据的容器来解决此问题,recycle-view,熟悉吧?Android中也有此组件,RecycleView,怎么用就不多说了,我直接附上官方文档,大家快去优化吧。

微信小程序setData数据量过大问题的解决与分页刷新加载的实现

 

微信小程序中我们经常使用setData方法来修改数据,从而达到更新页面的目的。但是当我们通过setData方法设置的数据过大时就会报如下错误。

vdSyncBatch 数据传输长度为 2260792 已经超过最大长度 1048576

这是因为setData设置的数据量是有限制的,单次设置的数据大小不得超过1024kb,否则就会出现如上错误。(微信小程序官方文档对于setDate的限制说明)

 

而我们在一些列表页面中,每次上拉加载更多后,会习惯性的把之前存在的数据和新加载的数据合并后,一起通过setData提交来重新渲染页面。但是这样,当用户浏览的数据量达到一定程度时,就会出现以上报错。

解决方式:从第一个红色框中可以看出,setData可以通过分批来对同一个data中的对象进行修改,而不是重新覆盖某个data中的对象。

问题代码:

data:{list:[]
},getData:function(){let arr = [];...// 本次加载的数据赋值给arrsetData({list: this.data.list.concat(arr)});
}

解决方式:

通过设置数组下标(二维数组),实现每次只setDate新加载的数据。

data:{pageNo:0,list:[]
},getListData:function(){let arr = [];......// 本次加载的数据赋值给arrsetData({['list[' + pageNo + ']']: arr});
}
<!--wxml--><view wx:for="{{list}}" wx:for-item="item" wx:key="{{index}}"><view wx:for="{{item}}" wx:for-item="ele" wx:key="{{indexEle}}"><text>ele.xxx</text><text>ele.xxx</text></view></view>

http://www.ppmy.cn/news/5064.html

相关文章

【Linux】重定向与通配符

目录一.输入输出重定向输出重定向概念小试牛刀输入重定向一切皆文件二.命令行的通配符星号&#xff08;*&#xff09;问号&#xff08;?&#xff09;中括号[]一.输入输出重定向 输入重定向&#xff1a;把文件导入到命令中。 输出重定向&#xff1a;指把原本要输出到屏幕的数据…

【AI with ML】第 13 章 :在 Android 应用程序中使用 TensorFlow Lite

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

使用HTML实现一个静态页面(含源码)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于ssm jsp二手书交易系统源码和论文

随着信息技术的快速发展和网络技术的日益完善&#xff0c;人们越来越重视电子商务。校园 二手物品交易系统是校园电子商务的一个典型代表。二手市场从以前的路边旧货市场转 变到网络中&#xff0c;通过二手交易系统实现了二手交易。而校园二手物品交易系统带给学生省 时、省…

敏捷的发展史

敏捷在这些年逐渐变得火热&#xff0c;它不仅被许多中小公司青睐&#xff0c;在全球一百强的企业中&#xff0c;敏捷开发也已大行其道&#xff0c;受到许多资深项目管理者和开发人员的推崇。到2008年&#xff0c;欧美软件企业中&#xff0c;有近半企业已采用敏捷方法进行开发。…

毕业设计 单片机墨水屏阅读器(单词卡) - 物联网 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理部分核心代码5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自…

vue的虚拟DOM和diff算法

虚拟DOM和diff算法密不可分&#xff0c; 虚拟dom&#xff0c;它本身就是一个 JavaScript 对象&#xff0c;为解决DOM操作非常耗时&#xff0c;把DOM转换为虚拟DOM&#xff0c;DOM操作转换为js计算&#xff0c;js执行速度较快。 diff算法在vue中被优化为O(n)的时间复杂度&#x…

CANoe-VN5000接口卡在Network-based模式下典型的应用场景

1、Network-based mode说明 CANoe软硬件都需要设置为Network-based mode 软件从CANoe12版本支持Network-based模式(CANoe12时称为Port-based mode,从13开始改为Network-based mode) 硬件从VN5000系列开始支持Network-based模式,VN5610A和VN5640设备需要确保切换到Network…