最佳方式实现微信小程序分页加载数据

一般小程序做分页加载数据,会做一些下拉加载更多、然后上拉刷新的操作。数据放在一个for循环里去加载,数据源是一个数组对象。在加载下一页数据时,将下一页的数据拼到当前数组后面。这样的确可以实现分页加载数据,但是如果数组中的对象都比较大,那么可能加载个几页数据,这个数组的大小就超过微信的限制了。可能会出现 VM429:1 appDataChange 数据传输长度为 1203320 已经超过最大长度 1048576 的异常。

下面分别使用普通的方式和另一种方法解决来处理数据分页加载的问题。完整项目可以在这里下载到

效果

最佳方式实现微信小程序分页加载数据_第1张图片
程序运行效果
最佳方式实现微信小程序分页加载数据_第2张图片
普通方式加载
增强方式加载

说明

这个项目中用来分页的数据都是请求同一段json数据,这段json的数据结构是我自己拼的,实际在应用中,可以根据自己项目需求来分页请求数据。这段数据的结构为一个data对象,data对象对应的是一个对象数组。数组中每个对象都是一篇文章的信息,嗯,就是高中语文书里都要背的那种。每页的数据是40条。一段json大小为570K。另外,这个项目是为了表现两种数据加载方式而设计的项目,并不是真实的项目。

{
    "data": [{
            "author": "作者",
            "dynasty": "作者朝代",
            "title": "文章题目",
            "article": "文章的具体内容",
            "useless_data": "没什么用的数据,纯粹为了增加数据长度,能更快查看到异常的抛出。",
            "share_times": 0,
            "like_times": 0,
            "id": "0"
        }]
}

数据加载页面中的功能简介

不论是普通加载还是增强加载,在页面的onLoad过程中都先调用了一个 loadInitData的方法,用来获取第一页数据。

之后点击页面底部的加载更多,可以加载下一页数据,而加载下一页数据使用的是另一个方法loadMoreData

另外页面中还可以点击爱心来增加喜欢次数likeTap、点击分享来增加分享次数shareTap,这是模拟向服务器请求更新数据。点击作者或文章题目来查看文章的详细信息viewDetail

普通方式分页加载数据

普通、简单的分页加载数据,是将要展示的数据放在一个数组中,通过一个for循环将数据渲染出来。在normalLoading.wxml中,普通加载的模版是这样的: