vue3+uniapp 实现上拉加载和下拉刷新功能
【摘要】 大家好,我是码喽的自我修养!今天给大家分享【vue3+uniapp实现上拉加载和下拉刷新功能】
一、实现上拉加载更多
1.配置pages.json
打开项目根目录中的pages.json
配置文件,为想要实现上拉加载的页面配置上拉触底的距离
{
"path" : "pages/classlist/classlist",
"style" :
{
"navigationBarTitleText" : "咸虾米壁纸分类列表",
"enablePullDownRefresh" : true,
"onReachBottomDistance": 50
}
},
2.声明onReachBottom
事件处理函数
在vue文件中声明onReachBottom
事件处理函数,用来监听页面的上拉触底行为:
// 触底加载
onReachBottom(()=>{
queryParams.value.pageNum++
getWallListData()
})
3.进行新旧数据的拼接处理
改造getWallListData
函数,当列表数据请求成功之后,进行新旧数据的拼接处理:
// 获取分类壁纸列表
let wallList = ref([])
const getWallListData =async ()=>{
let res = await getWallList(queryParams.value)
wallList.value = [...wallList.value,...res.data]
}
4.增加是否没有更多数据的判断
如果已经是最后一页数据了,则在底部显示没有更多,如下图:
先定义是否是最后一页的变量
let isBottom = ref(false)
修改getWallListData
方法,判断数据是否加载完毕,如果下面的公式成立,则证明没有下一页数据了:
queryParams.value.pageSize > res.data.length
let wallList = ref([])
const getWallListData =async ()=>{
let res = await getWallList(queryParams.value)
if(queryParams.value.pageSize>res.data.length) isBottom.value = true
wallList.value = [...wallList.value,...res.data]
}
修改onReachBottom
事件处理函数如下:
// 触底加载
onReachBottom(()=>{
if(isBottom.value)return
queryParams.value.pageNum++
getWallListData()
})
同时在template模版中,在页面底部可以引入uniAPP的一个扩展组件uni-load-more ,根据isBottom 变量的状态来动态显示加载中还是没有更多。
<view class="loadingLayout" v-if="wallList.length || isBottom">
<uni-load-more :status="isBottom?'noMore':'loading'"></uni-load-more>
</view>
二、实现下拉刷新
1.配置pages.json
在pages.json
配置文件中,为当前的classList
页面单独开启下拉刷新效果
{
"path" : "pages/classlist/classlist",
"style" :
{
"navigationBarTitleText" : "咸虾米壁纸分类列表",
"enablePullDownRefresh" : true,
"onReachBottomDistance": 50
}
},
2.声明onPullDownRefresh
事件处理函数
监听页面的onPullDownRefresh
事件处理函数:
// 下拉刷新
onPullDownRefresh(()=>{
// 1. 重置关键数据
wallList.value = []
isBottom.value = false
queryParams.value.pageNum=1
getWallListData()
})
3.修改getWallListData
函数并调用结束刷新API
修改getWallListData
函数,并通过uni.stopPullDownRefresh()结束刷新动态
// 获取分类壁纸列表
let wallList = ref([])
const getWallListData =async ()=>{
let res = await getWallList(queryParams.value)
uni.stopPullDownRefresh()
if(queryParams.value.pageSize>res.data.length)isBottom.value = true
wallList.value = [...wallList.value,...res.data]
}
到此这篇关于
3+uni-app框架实现上拉加载下拉刷新功能的文章就介绍到这了,更多相关Vue和uni-app的内容请关注本人以前的文章或继续浏览下面的文章,希望大家多多支持码喽的自我修养~💕
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)