【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件)

简介: 【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件)

此页可在动态列表的基础上完善,也可以单独学习

【微信小程序-原生开发】实用教程10 - 动态列表的新增、修改、删除

https://blog.csdn.net/weixin_41192489/article/details/128835069

效果预览

核心技术

列表的分页加载

  • skip 跳跃到指定下标开始查询
  • limit 限制返回的数据数量(云数据库最多20条/次,云函数最多100条/次)
  • skip 配合 limit 使用,便能实现分页啦!
.skip(10 * (this.data.currentPage - 1)).limit(10) // 分页

触底加载更多

默认加载列表的第一页数据后,当用户继续下滑列表,直到最后一行数据显示到屏幕中(即页面触底),开始加载下一页的数据

    // 触底加载更多
    onReachBottom: function () {
      // 若已无更多数据,停止加载
      if (this.data.noMore) {
        return
      }
      // 若还有更多数据,当前页码自增1
      this.setData({
        currentPage: this.data.currentPage + 1
      })
      // 查询下一页的数据
      this.getList()
    }

无更多数据的提醒和显示

当无更多数据时,访问接口后需弹窗提示消息,同时,在页面底部保留无更多数据的显示。

              wx.showToast({
                title: `没有更多数据啦!`,
              })

因多个页面需要使用,此处封装成一个公共组件

自定义组件 - noMore

自定义组件的创建

在 pages 文件夹下新建文件夹 components,在components文件夹中新建文件夹 noMore,在文件夹 noMore上右键快捷菜单新建 Component,名称为 index

此时会像新增 Page 一样自动生成四个文件,因此组件无更多逻辑,我们只需修改 wxml 和 wxss 即可

pages\components\noMore\index.wxml

<view class="noMoreBox">
  没有更多数据啦
</view>

pages\components\noMore\index.wxss

.noMoreBox {
  padding: 20rpx;
  text-align: center;
  font-size: 30rpx;
  color: #bbbaba;
  height: 60rpx;
}

自定义组件的使用

当页面中需要使用自定义组件时,需先在 json 中配置

pages\components\message\index.json

在usingComponents 配置中添加

"no-more": "/pages/components/noMore/index",

在页面末尾加上

<no-more wx:if="{{noMore}}" />

完整代码实现

      wx.showLoading({
        title: '加载中',
      })
      db.where(condition)
        .orderBy('date', 'desc') // 按 date 降序, asc 升序  desc 降序
        .skip(10 * (this.data.currentPage - 1)).limit(10) // 分页
        .get().then(
          res => {
            if (res.data.length === 0) {
              this.setData({
                currentPage: this.data.currentPage - 1,
                noMore: true
              })

              wx.showToast({
                title: `没有更多数据啦!`,
              })
            } else {
              let data = res.data.map(item => {
                item.date = DateToStr(item.date)
                return item
              })

              that.setData({
                // 累加已加载数据 concat
                dataList: that.data.dataList.concat(data)
              })
            }

            wx.hideLoading()
          }
        ).catch(() => {
          wx.hideLoading()
        })

目录
相关文章
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
3637 11
技术小白如何利用DeepSeek半小时开发微信小程序?
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。
|
小程序 关系型数据库 Java
weixin168“返家乡”高校暑期社会实践微信小程序设计与开发ssm(文档+源码)_kaic
本文探讨高校暑期社会实践微信小程序的开发与应用,旨在通过信息化手段提升活动管理效率。借助微信小程序技术、SSM框架及MySQL数据库,实现信息共享、流程规范和操作便捷。系统涵盖需求分析、可行性研究、设计实现等环节,确保技术可行、操作简便且经济合理。最终,该小程序可优化活动发布、学生信息管理和心得交流等功能,降低管理成本并提高工作效率。
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
15339 14
|
JSON 缓存 小程序
微信小程序组件封装与复用:提升开发效率
本文深入探讨了微信小程序的组件封装与复用,涵盖组件的意义、创建步骤、属性与事件处理,并通过自定义弹窗组件的案例详细说明。组件封装能提高代码复用性、开发效率和可维护性,确保UI一致性。掌握这些技能有助于构建更高质量的小程序。
|
缓存 小程序 API
微信小程序页面导航与路由:实现多页面跳转与数据传递
本文深入探讨微信小程序的页面导航与路由机制,介绍多种页面跳转方式如`wx.navigateTo`、`wx.redirectTo`、`wx.switchTab`等,并讲解通过URL、全局变量和事件传递数据的方法。结合案例实现多页面跳转与数据传递,帮助开发者掌握这一重要技能。
|
缓存 小程序 API
微信小程序网络请求与API调用:实现数据交互
本文深入探讨了微信小程序的网络请求与API调用,涵盖`wx.request`的基本用法、常见场景(如获取数据、提交表单、上传和下载文件)及注意事项(如域名配置、HTTPS协议、超时设置和并发限制)。通过一个简单案例,演示了如何实现小程序与服务器的数据交互。掌握这些技能将帮助你构建功能更丰富的应用。
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
697 0
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
379 0
在线课堂+工具组件小程序uniapp移动端源码
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
426 1
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目