微信小程序分页加载的实例代码

发布时间 - 2026-01-11 02:17:17    点击率:

整理文档,搜刮出一个微信小程序分页加载的代码,稍微整理精简一下做下分享。

分页加载功能大家遇到的应该会经常遇到,应用场景也很多,例如微博,QQ,微信朋友圈以及新闻类应用,都会有分页加载的功能,这不仅节省了我们用户的流量,还提升了用户体验。那么今天的这篇文章就是介绍微信小程序中如何实现分页加载的功能。照例先上源码及效果图。

源码传送门


要实现这样的功能,一般需要在请求数据时加入当前请求页数,以及页的大小(每页显示的数量)也有一部分接口是通过请求的开始偏移量和结束偏移量请求数据,例如你一页显示10条数据,第一次(第一页)请求即开始start为0结束end是9,第二页就是从10到19,以此类推。

既然要实现分页加载功能,最重要就是下拉以及上拉的处理事件,在微信小程序中已经帮我们封装好了上拉以及下拉的触发事件,如下

/**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function () {
 },

 /**
  * 页面上拉触底事件的处理函数
  */
 onReachBottom: function () {
 },

可能刚接触微信小程序的爱好者,会遇到一个问题,为什么我重写了上拉和下拉函数,但是当我上拉或者下拉的时候函数为什么不回调啊。莫急莫慌,那是因为除了重写这两个函数,我们还需要在json配置文件加入下面代码

{
  "enablePullDownRefresh": true
}

有了上面的代码,我们每次上拉或者下拉就会触发相对应的函数了。

在data中创建数据

 data: {
  page: 1,
  pageSize: 30,
  hasMoreData: true,
  contentlist: [],
 },

page即为当前请求数据时第几页,pageSize是每页的数据的大小,hasMoreData用于上拉的时候是不是要继续请求数据,即是不是还有更多数据。当我们网络请求数据成功后,如果请求数据的长度小于pageSize: 30,那么就表示没有更多数据,将hasMoreData更改为false,如果请求的数据长度是30,表示还有更多数据那么hasMoreData久更改为true,并将页数page加1.当下拉的时候讲page先更改为1,然后去查询数据,当查询数据成功时,如果page为1,就将获取的数据直接赋值给contentlist,如果页数大于1的话,就将请求的数据追加在contentlist后面。这样就可以实现分页加载的功能了。

经过上面的分析,我们已经对分页加载的实现有了一个清晰的认识,那么接下来我就介绍代码的实现。

 getMusicInfo: function (message) {
  var that = this
  var data = {
   showapi_appid: '25158',
   showapi_sign: 'c0d685445898438f8c12ee8e93c2ee74',
   keyword: '我',
   page: that.data.page
  }
  network.requestLoading('https://route.showapi.com/213-1', data, message, function (res) {
   console.log(res)
   var contentlistTem = that.data.contentlist
   if (res.showapi_res_code == 0) {
    if (that.data.page == 1) {
     contentlistTem = []
    }
    var contentlist = res.showapi_res_body.pagebean.contentlist
    if (contentlist.length < that.data.pageSize) {
     that.setData({
      contentlist: contentlistTem.concat(contentlist),
      hasMoreData: false
     })
    } else {
     that.setData({
      contentlist: contentlistTem.concat(contentlist),
      hasMoreData: true,
      page: that.data.page + 1
     })
    }
   } else {
    wx.showToast({
     title: res.showapi_res_error,
    })
   }

  }, function (res) {
   wx.showToast({
    title: '加载数据失败',
   })

  })
 },

上面函数就是获取音乐列表信息的请求处理逻辑,该函数有一个参数message,它是用来展示加载数据时的提示信息,例如当下拉的时候,提示信息为正在刷新数据,当上拉的时候提示正在加载更多数据。

那么我们当进入页面的时候开始加载一次数据,即在onLoad函数,如下

 onLoad: function (options) {
  // 页面初始化 options为页面跳转所带来的参数
  var that = this
  that.getMusicInfo('正在加载数据...')
 },

然后上拉和下拉函数的实现如下

 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function () {
  this.data.page = 1
  this.getMusicInfo('正在刷新数据')
 },

 /**
  * 页面上拉触底事件的处理函数
  */
 onReachBottom: function () {
  if (this.data.hasMoreData) {
   this.getMusicInfo('加载更多数据')
  } else {
   wx.showToast({
    title: '没有更多数据',
   })
  }
 },

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 微信小程序分页加载  # 微信小程序分页  # 微信小程序实战之上拉(分页加载)效果(2)  # 微信小程序云开发实现数据添加、查询和分页  # 微信小程序模板之分页滑动栏  # 微信小程序实现移动端滑动分页效果(ajax)  # 微信小程序实现分页加载效果  # 微信小程序实现瀑布流分页滚动加载  # 微信小程序实现下拉刷新和上拉分页效果的方法详解  # 微信小程序之搜索分页功能的实现代码  # 微信小程序实现分页查询详解  # 微信小程序实现本地分页加载  # 加载  # 分页  # 提示信息  # 每页  # 就将  # 正在加载  # 触底  # 我就  # 就会  # 也有  # 会有  # 偏移量  # 好了  # 最重要  # 是从  # 以此类推  # 它是  # 要在  # 这两个  # 并将 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 免费视频制作网站,更新又快又好的免费电影网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何在阿里云购买域名并搭建网站?  javascript中的try catch异常捕获机制用法分析  如何在万网自助建站中设置域名及备案?  如何批量查询域名的建站时间记录?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  phpredis提高消息队列的实时性方法(推荐)  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Windows Hello人脸识别突然无法使用  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何在阿里云部署织梦网站?  南京网站制作费用,南京远驱官方网站?  无锡营销型网站制作公司,无锡网选车牌流程?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何用PHP工具快速搭建高效网站?  Laravel Docker环境搭建教程_Laravel Sail使用指南  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  高端建站三要素:定制模板、企业官网与响应式设计优化  微信推文制作网站有哪些,怎么做微信推文,急?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  如何自定义建站之星网站的导航菜单样式?  QQ浏览器网页版登录入口 个人中心在线进入  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何使用Collections进行数据处理?(实用方法示例)  IOS倒计时设置UIButton标题title的抖动问题  Laravel如何创建自定义Facades?(详细步骤)  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  b2c电商网站制作流程,b2c水平综合的电商平台?  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  佛山网站制作系统,佛山企业变更地址网上办理步骤?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  EditPlus中的正则表达式实战(5)  如何快速搭建高效香港服务器网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  详解jQuery中的事件  个人摄影网站制作流程,摄影爱好者都去什么网站?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  如何正确下载安装西数主机建站助手?