uniapp上拉加载更多功能的简单实现
示例
前提:安装了uniapp的LoadMore插件(一般初始都会安装此插件), https://ext.dcloud.net.cn/plugin?id=29
<template>
<view class="container">
<view v-for="(item,index) in videoList" :key="index">...</view> //渲染的列表处
<view v-show="isLoadMore"> //loading加载提示处
<uni-load-more :status="loadStatus" ></uni-load-more>
</view>
</view>
</template>
<script>
export default {
data() {
return {
videoList:[],
page:1,
pagesize:10,
loadStatus:'loading', //加载样式:more-加载前样式,loading-加载中样式,nomore-没有数据样式
isLoadMore:false, //是否加载中
};
},
onLoad() {
this.getVideoList()
},
onReachBottom(){ //上拉触底函数
if(!this.isLoadMore){ //此处判断,上锁,防止重复请求
this.isLoadMore=true
this.page+=1
this.getVideoList()
}
},
methods:{
getVideoList(){
uni.request({
url: `${this.$baseUrl}/api-video/getlist?page=${this.page}&pagesize=${this.pagesize}`,
method: 'GET',
success: res => {
if(res.data.code==200){
if(res.data.data.list){
this.videoList=this.videoList.concat(res.data.data.list)
if(res.data.data.list.length<this.pagesize){ //判断接口返回数据量小于请求数据量,则表示此为最后一页
this.isLoadMore=true
this.loadStatus='nomore'
}else{
this.isLoadMore=false
}
}else{
this.isLoadMore=true
this.loadStatus='nomore'
}
}else{ //接口请求失败的处理
uni.showToast({title:res.data.msg,icon:'none'})
this.isLoadMore=false
if(this.page>1){
this.page-=1
}
}
},
fail: () => { //接口请求失败的处理
uni.showToast({title: '服务器开小差了呢,请您稍后再试',icon:'none'})
this.isLoadMore=false
if(this.page>1){
this.page-=1
}
},
});
},
}
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!