前端Vue3列表滑动无限加载功能实现
列表无限加载功能实现

核心实现逻辑:使用elementPlus提供的 v-infinite-scrol 指令监听是否满足触底条件,满足加载条件时让页数参数加一获取下一页数据,做新老数据拼接渲染

代码实现
<div class="body" v-infinite-scroll="load" :infinite-scroll-disabled="disabled">
<!-- 商品列表-->
<GoodsItem v-for="item in goodList" :key="item.id" :goods="item" />
</div>v-infinite-scroll="load":监听是否满足触底条件
:infinite-scroll-disabled="disabled": 是否当前禁用加载
// 获取基础数据列表渲染
const goodList = ref([])
const reqData = ref({
categoryId: id,
page: 1,
pageSize: 20,
sortField: 'publishTime'
})
const getGoodList = async () => {
const res = await getSubCategoryAPI(reqData.value)
console.log(res)
goodList.value = res.result.items
}
// 更多加载
const disabled = ref(false)
const load = async ()=>{
console.log('加载更多数据了');
// 获取下一页数据
reqData.value.page++
const res = await getSubCategoryAPI(reqData.value)
// 新老数据的拼接
goodList.value = [...goodList.value, ...res.result.items] // ...goodList.value老数据 ...res.result.items新数据
// 加载完毕停止监听(如果不结束监听一直向下滑动,就会不断发送新的请求,会造成一定的资源浪费)
if(res.result.items.length === 0){ // 如果新数据为空,则停止监听(可以根据后端返回的数据来判断)
disabled.value = true
}
}
由上图可以看出前端不停的在向后端发起新的请求,当页面滑动到底部没有数据之后就不会发送请求,这样我们的前端Vue3列表滑动无限加载实现就完成了
到此这篇关于前端Vue3列表滑动无限加载实现的文章就介绍到这了,更多相关Vue列表无限加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
electron-vite工具打包后如何通过内置配置文件动态修改接口地址
使用electron-vite 工具开发项目打包完后每次要改接口地址都要重新打包,对于多环境切换或者频繁变更接口地址就显得麻烦,这篇文章主要介绍了electron-vite工具打包后通过内置配置文件动态修改接口地址实现方法,需要的朋友可以参考下2024-05-05
vue3+vue-cli4中使用svg的方式详解(亲测可用)
最近在做个vue的项目,从各种github上的开源库上借鉴开发方法,给大家分享下,这篇文章主要给大家介绍了关于vue3+vue-cli4中使用svg的相关资料,需要的朋友可以参考下2022-08-08
在导入.vue文件的时候,ts报错提示:找不到模块“@/Layout/index.vue”或其相应的类型声明问题
这篇文章主要介绍了在导入.vue文件的时候,ts报错提示:找不到模块“@/Layout/index.vue”或其相应的类型声明问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08


最新评论