【微信小程序-原生开发】实用教程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()
        })

目录
相关文章
|
4月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
4月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
517 1
|
4月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
399 7
|
4月前
|
移动开发 小程序 前端开发
小程序快速开发平台有哪些?
小程序开发并非“一刀切”,需结合技术储备、资金预算、时间规划及功能需求等多维度因素综合考量。以下为您详细拆解五种主流开发方案及其适用场景,助您精准匹配开发路径。
321 3
|
4月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?小程序开发制作软件推荐
小程序开发方案全解析:5种主流方式与选择指南 小程序开发需根据技术能力、预算、时间及功能需求综合决策。以下为5种主流开发方案及适用场景分析:
25946 0
|
6月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
330 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
9月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1919 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
8月前
|
JSON 安全 定位技术
微信附近人提取v3脚本, 微信附近人id提取技术插件,采集附近人wxid数据工具
本内容介绍微信“附近的人”功能的技术原理与实现方法,基于LBS服务,涉及位置模拟、协议分析及数据解析。通过修改GPS坐标或使用Frida等工具hook位置函数

热门文章

最新文章