微信小程序 - 自定义实现分页功能

devtools/2025/2/28 2:01:49/

概述

  • html" title=微信html" title=小程序>小程序>微信html" title=小程序>小程序项目中,没有现成的分页器组件,所以需要自定义实现分页功能

自定义实现分页功能

json_8">1、index.json
json">{"usingComponents": {"van-button": "@vant/weapp/button/index"}
}
  • 这里使用 Vant Weapp 中的 van-button 组件,所以需要额外引入 Vant Weapp(当然,也可以使用html" title=微信html" title=小程序>小程序>微信html" title=小程序>小程序按钮组件)

  • Vant Weapp 官网地址:https://vant-ui.github.io/vant-weapp/#/quickstart

  1. 安装 Vant Weapp:npm i @vant/weapp -S --production

  2. 修改 app.json:将 app.json 中的 "style": "v2" 去除

  3. 点击 【工具】 -> 点击 【构建 npm】

2、index.wxml
html"><view class="pagination"><van-button type="primary" size="small" bind:click="handlePrevPage" disabled="{{pageNum === 1}}">上一页</van-button><text class="page-info">{{pageNum}} / {{pageTotal}}</text><van-button type="primary" size="small" bind:click="handleNextPage" disabled="{{pageNum === pageTotal}}">下一页</van-button>
</view>
  • 分页器由一个容器(view)、两个按钮(van-button)、一个页码信息(text)组成
(1)上一页按钮
  1. bind:click="handlePrevPage" 点击时触发 handlePrevPage 方法

  2. disabled="{{pageNum === 1}}" 当当前页码(pageNum)为 1 时,上一页按钮禁用

(2)下一页按钮
  1. bind:click="handleNextPage" 点击时触发 handleNextPage 方法

  2. disabled="{{pageNum === pageTotal}}" 当当前页码(pageNum)等于总页数(pageTotal)时,下一页按钮禁用

(3)页码信息
  • {{pageNum}} / {{pageTotal}} 显示当前页码与总页数
3、index.wxss
.pagination {margin-top: 20px;display: flex;justify-content: center;align-items: center;
}.page-info {margin: 0 20px;font-size: 14px;color: #333;
}
4、index.ts
Page({data: {pageNum: 1,pageSize: 5,pageTotal: 1,total: 0,records: [],},getRecords() {...},handlePrevPage() {if (this.data.pageNum === 1) {wx.showToast({title: "已经是第一页了",icon: "none",});return;}this.setData({ pageNum: this.data.pageNum - 1 });this.getRecords();},handleNextPage() {if (this.data.pageNum === this.data.pageTotal) {wx.showToast({title: "已经是最后一页了",icon: "none",});return;}this.setData({ pageNum: this.data.pageNum + 1 });this.getRecords();},
});
(1)数据字段
数据字段说明
pageNum当前页码
pageSize每页显示的条数
pageTotal总页数
total总条数
records当前页的数据列表
(2)getRecords 方法
  1. 占位方法,实际逻辑需要根据业务需求实现

  2. 需要通过接口请求数据,并根据 pageNum 和 pageSize 参数获取对应页的数据

(3)handlePrevPage 方法
  1. 首先检查当前页码是否为 1,如果是,则提示用户“已经是第一页了”

  2. 如果当前页码大于 1,则将 pageNum 减 1,并调用 getRecords 方法加载上一页的数据

(4)handleNextPage 方法
  1. 首先检查当前页码是否等于总页数,如果是,则提示用户“已经是最后一页了”

  2. 如果当前页码小于总页数,则将 pageNum 加 1,并调用 getRecords 方法加载下一页的数据


http://www.ppmy.cn/devtools/163221.html

相关文章

聚焦低空经济,峰飞航空飞行汽车开启未来出行新篇章

曾经只存在于科幻电影中的“飞行汽车”&#xff0c;如今正以eVTOL&#xff08;电动垂直起降飞行器&#xff09;的形式加速落地&#xff0c;成为全球科技竞争的新焦点。作为低空经济的核心载体之一&#xff0c;eVTOL不仅承载着缓解地面交通压力的使命&#xff0c;更被视为推动城…

git上传gitee仓库---简单方便

安装完git以后 在资源管理器中右键&#xff1a; 选择Open Git Bash here 接着gitclone&#xff0c;从gitee上面复制链接: https://gitee.com/hekai666/python-deeplearning.git 粘贴过来&#xff1a; 回车&#xff1a; 然后在本地就会多出来一个文件&#xff1a; 打开文件夹以…

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk 35 三个报错信息如下 第一个 WARNING:We recommend using a newer Android Gradle plugin to use compileSdk 35This Android Gradle plugin (7.1.2) was tested up to compileSdk 32This warning…

ffmpeg常用方法(一)

FFmpeg是一个非常强大的开源项目&#xff0c;提供了一套可以用来录制、转换数字音频、视频&#xff0c;并能将其转换成不同格式的工具和库。它是命令行工具&#xff0c;意味着它没有图形用户界面&#xff0c;但它能够被嵌入到其他应用程序中。它支持多种操作系统&#xff0c;包…

归并排序:分而治之的排序之道

在所有的排序算法中&#xff0c;归并排序&#xff08;Merge Sort&#xff09;是一种非常经典且高效的排序算法。它采用了分治法&#xff08;Divide and Conquer&#xff09;策略&#xff0c;凭借着优秀的时间复杂度和稳定性&#xff0c;广泛应用于实际的排序任务中。 今天&…

Maven 的高级调试技巧与常见问题

在使用 Maven 进行构建时&#xff0c;尤其是大型项目或复杂依赖管理时&#xff0c;构建过程中可能会出现各种问题。通过有效的调试技巧和工具&#xff0c;可以更高效地定位和解决这些问题。本文将介绍 Maven 构建过程中常见的错误 以及 调试方法&#xff0c;帮助开发者快速解决…

SEO炼金术(4)| Next.js SEO 全攻略

在上一篇文章 SEO炼金术&#xff08;3&#xff09;| 深入解析 SEO 关键要素 中&#xff0c;我们深入解析了 SEO 关键要素&#xff0c;包括 meta 标签、robots.txt、canonical、sitemap.xml 和 hreflang&#xff0c;并探讨了它们在搜索引擎优化&#xff08;SEO&#xff09;中的作…

DOM 事件 HTML 标签属性速查手册

以下是一份 DOM 事件 & HTML 标签属性速查手册&#xff0c;涵盖常用场景和示例&#xff0c;助你快速查阅和使用&#xff1a; 一、DOM 事件速查表 1. 鼠标事件 事件名触发时机适用元素示例代码click元素被点击任意可见元素button.addEventListener(click, () > { ... …