更新记录
1.0.0(2026-11-12) 下载此版本
首发版本,功能对齐 z-paging 2.8.8。
新增
- 全自动分页管理:
@query+complete系列方法,pageNo/pageSize自动计算 - 自定义下拉刷新:default/release-to-refresh/loading/complete 状态机、增量阻尼算法、角度限制、松手吸附与回弹动画、震动、最后更新时间
- 底部加载更多:default/loading/no-more/fail 四态、flower/circle 双图标、no-more 分割线、hideNoMoreInside/hideNoMoreByLimit/insideMore
- 空数据图:空数据/加载失败双态、重新加载按钮、slot 自定义
- 虚拟列表:fixed/dynamic 高度双模式(前缀和算法)、多列、预加载
- 聊天记录模式:scaleY(-1) 双重倒置、顶部加载更多、键盘适配
- 本地分页
setLocalPaging - 列表缓存
useCache/cacheKey/cacheMode - 国际化:zh-Hans/zh-Hant/en,全部文案 props 支持 i18n 对象写法
- 下拉进入二楼(F2)
- 返回顶部按钮、scrollToXXX 方法族、页面滚动模式
- slot 体系:default/top/bottom/left/right/refresher/refresherComplete/loadingMore×4/empty/loading/backToTop/cell/header/footer/chatLoading/chatNoMore/f2
- 全局配置(config +
uni.$antPaging.config)与拦截器(query/fetch/language) - 蒸汽模式(Vapor)兼容:全组合式 API、BEM 简单 class 选择器、无 wxs/renderjs,可运行于 uni-app x 蒸汽模式工程
与 z-paging 的差异
- 仅支持 vue3 组合式(不支持 vue2、不支持 nvue 渲染分支)
- 下拉刷新统一走 js touch 处理(不使用 wxs/renderjs,保证蒸汽模式与全平台一致性)
平台兼容性
uni-app(5.34)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | √ | √ | √ | - | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | - | - | √ | √ | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| √ | √ | × | × |
ant-paging 分页组件
ant-paging 是一个高性能全平台分页组件,功能与 z-paging 2.8.8(MIT 开源)一比一对齐,并在此基础上:
- ✅ 支持蒸汽模式(uni-app x Vapor,去虚拟 DOM 渲染引擎,HBuilderX 5.0+ 鸿蒙 / 5.11+ iOS / 5.21+ Android)
- ✅ 支持 App(鸿蒙/Android/iOS)、小程序(微信/支付宝/抖音/百度/QQ 等)、H5
- ✅ 全部采用 Vue3 组合式 API(
<script setup>)+ BEM 简单 class 选择器编写,一份代码同时运行于普通 uni-app 与 uni-app x 蒸汽模式
快速上手
两步接入:绑定 v-model 列表 + 绑定 @query 请求方法:
<template>
<ant-paging ref="paging" v-model="dataList" @query="queryList">
<view v-for="(item, index) in dataList" :key="index">
<text>{{ item.title }}</text>
</view>
</ant-paging>
</template>
<script setup>
import { ref } from 'vue'
const paging = ref(null)
const dataList = ref([])
const queryList = (pageNo, pageSize) => {
// 此处请求服务器
setTimeout(() => {
const list = []
for (let i = 0; i < pageSize; i++) {
list.push({ title: `第${pageNo}页 第${i + 1}条` })
}
paging.value.complete(list)
}, 500)
}
</script>
自定义下拉刷新图标(含 loading 图标)
四个状态图标均可自定义(传图片 url 或 base64):
| Prop | 状态 | 默认 |
|---|---|---|
refresher-default-img |
继续下拉刷新(箭头朝下) | 内置箭头 |
refresher-pulling-img |
松手立即刷新(未设置时回落 default-img) | 内置箭头 |
refresher-refreshing-img |
刷新中(loading图标) | 内置菊花 |
refresher-complete-img |
刷新成功 | 内置对勾 |
配套控制:
refresher-img-style:图标尺寸/边距,如:refresher-img-style="{ width: '40rpx', height: '40rpx' }":refresher-refreshing-animated="true":loading 图标是否旋转(默认 true;自定义图标为平滑旋转,内置菊花为模拟系统逐帧动效)
<ant-paging refresher-refreshing-text="正在刷新..."
:refresher-refreshing-img="myLoadingIcon"
:refresher-img-style="{ width: '40rpx', height: '40rpx' }" ... />
更彻底的自定义(文字+图标整体布局、lottie 等)请使用
slot="refresher"(作用域参数refresherStatus),注意 slot 会整体替换默认刷新视图,与图片级自定义互斥。演示见pages/paging/custom.vue。
蒸汽模式(Vapor)接入
- 使用 HBuilderX(5.0+)打开 uni-app x 工程
manifest.json可视化界面勾选蒸汽模式- 将
uni_modules/ant-paging复制到工程uni_modules目录 - 页面中直接使用
<ant-paging>(蒸汽模式支持弱类型 js 组件,本组件已按蒸汽模式约束编写:组合式 API / 简单 class 选择器 / 无 wxs / 样式隔离 2.0)
已验证
- HBuilderX 5.34 + 鸿蒙蒸汽目标编译通过(
view.render compile target: nativecode),组件产物含libentry.so原生引用 - 编译验证工程见宿主项目
test/vapor-verify/(含 CLI 编译命令与开关说明) - 已处理的蒸汽 CSS 兼容点:
vh单位(uvue 不支持)、animation steps()(APP 下降级 linear)——均通过条件编译,不影响 H5/小程序
核心功能
| 功能 | 说明 |
|---|---|
| 分页全自动管理 | page 中无需定义分页变量,绑定网络请求方法和分页结果数组即可 |
| 自定义下拉刷新 | default/release-to-refresh/loading/complete 全状态机,阻尼/角度限制/回弹动画/震动/最后更新时间 |
| 底部加载更多 | 四态视图、flower/circle 图标、no-more 分割线、hideNoMoreInside、insideMore |
| 空数据图 | 空数据/加载失败自动切换、重新加载按钮、slot 自定义 |
| 虚拟列表 | fixed/dynamic 双高度模式(前缀和算法),支持万级数据 |
| 聊天记录模式 | 无闪动聊天分页(scaleY(-1) 倒置),键盘自动适配 |
| 本地分页 | setLocalPaging 一次传入全量数据,内部自动分页 |
| 缓存 | 首页数据本地缓存,秒开 |
| 国际化 | zh-Hans / zh-Hant / en,全部文案可覆盖 |
| 下拉进入二楼 | refresherF2Enabled + slot="f2" |
| 返回顶部 | auto-show-back-to-top |
| 页面滚动 | use-page-scroll + useAntPaging hook |
主要 API(对照 z-paging)
Props(180+,与 z-paging 同名同义)
常用:
| Prop | 说明 | 默认值 |
|---|---|---|
v-model |
分页数据数组 | [] |
defaultPageNo |
初始页码 | 1 |
defaultPageSize |
每页条数 | 10 |
auto |
mounted 后自动调用 reload | true |
fixed |
是否 fixed 布局 | true |
refresherEnabled |
开启下拉刷新 | true |
refresherThreshold |
下拉刷新阈值 | 80rpx |
loadingMoreEnabled |
开启上拉加载更多 | true |
useVirtualList |
虚拟列表 | false |
useChatRecordMode |
聊天记录模式 | false |
usePageScroll |
页面滚动模式 | false |
hideEmptyView |
隐藏空数据图 | false |
showRefresherUpdateTime |
显示最后更新时间 | false |
完整 props 请参考源码 components/ant-paging/js/ant-paging-props.js(与 z-paging 文档一比一对齐)。
Events(30+)
| 事件 | 说明 |
|---|---|
@query |
(pageNo, pageSize, from) 下拉刷新或加载更多自动触发 |
@listChange / @update:list |
列表数据改变 |
@refresherStatusChange |
下拉刷新状态改变 |
@loadingStatusChange |
加载更多状态改变 |
@isLoadFailedChange |
请求失败状态改变 |
@scroll / @scrolltolower / @scrolltoupper |
滚动事件透传 |
@emptyViewReload |
点击空数据图重新加载(可拦截) |
@backToTopClick |
点击返回顶部(可拦截) |
@virtualListChange |
虚拟列表渲染切片改变 |
@keyboardHeightChange |
聊天模式键盘高度改变 |
Methods(40+,通过 ref 调用)
| 方法 | 说明 |
|---|---|
reload(animate) |
重新加载,pageNo 重置 |
refresh() |
刷新当前页数据 |
refreshToPage(page) |
刷新至指定页 |
complete(data, success) |
请求结束(数组长度 < pageSize 自动判定无更多) |
completeByTotal(data, total) |
通过 total 判定无更多并截断 |
completeByNoMore(data, noMore) |
自行判定无更多 |
completeByKey(data, key) |
dataKey 一致性校验 |
completeByError(msg) |
请求失败并传入原因 |
clear() |
清空数据 |
setLocalPaging(data) |
本地分页 |
addDataFromTop(data) |
顶部插入数据 |
scrollToTop / scrollToBottom |
滚动到顶/底 |
scrollIntoViewById(id) |
滚动到指定元素 |
goF2() / closeF2() |
进入/关闭二楼 |
endRefresh() |
终止下拉刷新状态 |
doLoadMore() |
手动触发加载更多(页面滚动 onReachBottom 中调用) |
addChatRecordData(data) |
添加聊天记录 |
updateCache() |
手动更新缓存 |
Slots(20 个)
default / top / bottom / left / right / refresher(作用域:refresherStatus)/ refresherComplete / refresherF2 / f2 / loadingMoreDefault / loadingMoreLoading / loadingMoreNoMore / loadingMoreFail / empty(作用域:isLoadFailed)/ loading / backToTop / cell(作用域:item, index)/ header / footer / chatLoading / chatNoMore
页面滚动模式
use-page-scroll 时在页面 setup 中调用一次 useAntPaging(内部自动注册 onPageScroll / onReachBottom / onPullDownRefresh 并转发给组件):
<template>
<ant-paging ref="paging" v-model="dataList" use-page-scroll @query="queryList">...</ant-paging>
</template>
<script setup>
import { ref } from 'vue'
import { useAntPaging } from '@/uni_modules/ant-paging/components/ant-paging/js/modules/use-ant-paging.js'
const paging = ref(null)
useAntPaging(paging)
</script>
全局配置
// main.js
uni.$antPaging = {
config: {
defaultPageSize: 20,
auto: false
}
}
或修改 components/ant-paging/js/ant-paging-config.js。
拦截器
uni.$antPagingInterceptor = null // 见 js/ant-paging-interceptor.js
// 在 App.vue / main.js:
import interceptor from '@/uni_modules/ant-paging/components/ant-paging/js/ant-paging-interceptor.js'
interceptor.handleQuery((pageNo, pageSize, from) => [pageNo, pageSize, from])
与 z-paging 的差异
| 项 | z-paging | ant-paging |
|---|---|---|
| API 风格 | 选项式 + mixin | 组合式 <script setup> |
| vue2 | 支持 | 不支持 |
| nvue | 支持 | 不支持(保留 props 定义) |
| wxs/renderjs | 支持(微信/QQ/H5/App) | 不使用(js touch 全平台一致) |
| 蒸汽模式 | ❌ | ✅ |
| 微信小程序下拉跟手性 | wxs 丝滑 | js 通信略有延迟(功能一致) |
平台兼容
| 端 | 支持 |
|---|---|
| H5 | ✅ |
| 微信/支付宝/抖音/百度/QQ/快手小程序 | ✅ |
| App-Android(含蒸汽模式 5.21+) | ✅ |
| App-iOS(含蒸汽模式 5.11+) | ✅ |
| App-鸿蒙(含蒸汽模式 5.0+) | ✅ |
| uni-app x 蒸汽模式 | ✅ |
许可
MIT。组件视觉素材(base64 图标)复用自 MIT 开源的 z-paging。

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 26
赞赏 1
下载 12760624
赞赏 1959
赞赏
京公网安备:11010802035340号