小程序崩溃引起的问题
前些天,忽然接到用户的大量反馈,咱们的小程序频繁出现闪退,崩溃的现象。如图, css
因而立刻着手追查问题,首先肯定了致使闪退的页面。是在一个有长列表的页面,当上拉加载更多,翻页翻多几页的时候就致使闪退了。通过重重排查(时间问题,这里就不详细描述排查的方法了,大多数用的都是缩小范围排除法啦),最后终于肯定了问题所在,原来是在列表中,同事最近新加上的css3动画所致,这里的列表是循环渲染的一个组件,组件中的一个弹窗的弹出和收起,使用动画,可是这里没有加上wx:if,致使了循环渲染该动画,因此翻页翻着翻着就挂掉了。 肯定了问题,就很好办了,加上条件判断,只有须要的时候,才渲染弹出弹窗。真机调试,暴力狂刷数据,发现闪退的现象再也不出现了,闪退问题解决,然而高兴不到三分钟,又出问题了,发现翻页到十几页的时候,再也刷不动后面的数据了,明明是还有更多数据的。再在开发工具上看查看数据,结果控制台报了这么一个错
在真机上为:
这是什么问题呢,查看官方文档,发现是有这样的限制的前端
回顾咱们的代码,这里的分页加载数据,上拉加载,数据是放在一个for循环里去加载,数据源是一个数组对象。在加载下一页数据时,将下一页的数据拼到当前数组后面。这里是常规的作法。能够看看代码:
这里能够看到,每次获取新的一页,都要从新setData新的数组,仔细想一想,当这个数组到后面愈来愈大的时候,很容易就超出了单次设置数据超过1024kb的限制了。那么怎么解决这个问题呢,这里官方文档里面其实有提到一个注意点,css3
既然这里是支持改变数组的某一项,那么分页的问题,能够改变为一个二维数组,仍是直接看代码吧。小程序
这里的方法则暂时摆脱了单次设置数据多大的问题。固然,要是单页的数据过多,仍是会出现问题的。最合适的仍是对数据结构进行精简,前端没必要要的数据,能够不传过来前端。数组
写在最后,此次第一次写相似的分享,描述仍是有些不清晰,之后能够多尝试这样的总结吧。css3动画