更新记录
1.0.0.1(2026-01-04)
下载此版本
master
1.0.0(2026-01-04)
下载此版本
master
平台兼容性
uni-app(4.13)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
- |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
其他
安装
在市场导入xf-pageuni_modules版本的即可,无需import
组件关联说明
代码演示
基本用法
<template>
<view class="main-page">
<xf-page ref="xfPageRef" :apiFn="request" :canRefresh="true" :fixed="false">
<view class="main xf-col" style="background-color: #FFF; height: 300px;" v-if="detail">
<text>名字: {{detail.name}}</text>
<text>年龄: {{detail.age}}</text>
</view>
</xf-page>
</view>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const detail = ref()
//page加载回调
const request = () => {
return apiWeiboList().then((res : any) => {
detail.value = res
return res
})
}
//模拟接口请求
const apiWeiboList = () => {
return new Promise((resolute, reject) => {
setTimeout(function () {
try {
let res = {
id: 1,
name: 'shenhl',
age: 20
};
//模拟接口请求成功
resolute(res);
} catch (e) {
//模拟接口请求失败
reject(e);
}
}, 2000)
})
}
</script>
<template>
<xf-page ref="xfPageRef" :apiFn="request" isUseVirtualList isPaging :canRefresh="true" :fixed="false">
<view class="item xf-col" v-for="(item,index) in dataList" :key="index">
<text> {{item.title}}</text>
<text class="b-mt16"> {{item.content}}</text>
</view>
</xf-page>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const dataList = ref([])
//page加载回调
const request = (page :number ,pageSize:number) => {
return apiWeiboList(page, pageSize).then((res : any) => {
dataList.value = dataList.value.concat(res)
return res
})
}
// 获取微博列表
const apiWeiboList = (pageNum, pageSize) => {
return new Promise((resolute, reject)=>{
//延时2秒,模拟联网
setTimeout(function() {
try {
let list = [];
if(!pageNum){
//此处模拟下拉刷新返回的数据
let id=new Date().getTime();
let newObj={id:id, title:"【新增微博"+id+"】 新增微博", content:"新增微博的内容,新增微博的内容"};
list.push(newObj);
}else{
//此处模拟上拉加载返回的数据
for (let i = 0; i < pageSize; i++) {
let upIndex=(pageNum-1)*pageSize+i+1;
let newObj={id:upIndex, title:"【微博"+upIndex+"】 标题标题标题标题标题标题", content:"内容内容内容内容内容内容内容内容内容内容"};
list.push(newObj);
}
console.log("page.num=" + pageNum + ", page.size=" + pageSize + ", curPageData.length=" + list.length);
}
//模拟接口请求成功
resolute(list);
} catch (e) {
//模拟接口请求失败
reject(e);
}
}, 3000)
})
}
</script>
API
Props
| 属性名 |
说明 |
类型 |
默认值 |
| isUseVirtualList |
是否使用虚拟list,否则只显示整体 |
boolean |
false |
| apiFn |
接口调用方法有回调 |
func |
- |
| canRefresh |
页面是否可以下拉刷新 |
boolean |
false |
| safeAreaInsetBottom |
是否打开安全区域 |
boolean |
false |
| fixed |
是否铺满屏幕 popup |
boolean |
false |
| isCellHeightFiexed |
页面中的cell高度是否固定不变的 |
boolean |
false |
| isPaging |
是否分页 |
string |
false |
| pageSize |
每页数据量 |
number |
默认10 |
事件 Emits
| 事件名 |
说明 |
返回值 |
| virtualListChange |
虚拟列表当前渲染的数组改变时触发 |
|
外部调用事件 Expose