基础思路
- 触底条件满足之后 page++,拉取下一页数据
- 新老数据做数组拼接
- 判断是否已经全部加载完毕,停止监听
步骤1:加载下一页数据
重构商品二级分类组件
注:v-infinite-scroll为elementplus中infinite scroll无限滚动的自定义指令
<div class="body" v-infinite-scroll="load" > <!-- 商品列表--> <goodsitem v-for="good in goodlist" :good="good" :key="good.id"></goodsitem> </div>
//加载更多 const load = async () => { // 获取下一页的数据 reqdata.value.page++ console.log(reqdata.value.page) const res = await getsubcategoryapi(reqdata.value) //新加载的数据与老数据进行拼接合并 goodlist.value = [...goodlist.value, ...res.result.items] } // 获取二级分类商品 const goodlist = ref([]) const reqdata = ref({ categoryid: route.params.id, page: 1, pagesize: 20, sortfield: 'publishtime' }) const getgoodlist = async () => { const res = await getsubcategoryapi(reqdata.value) goodlist.value = res.result.items } onmounted(() => getgoodlist())
步骤2:无数据停止加载
重构template与script,infinite-scroll-disabled
也是infinite scroll的指令
<div class="body" v-infinite-scroll="load" :infinite-scroll-disabled="disabled"> <!-- 商品列表--> <goodsitem v-for="good in goodlist" :good="good" :key="good.id"></goodsitem> </div>
到此这篇关于vue实现商品列表的无限加载的文章就介绍到这了,更多相关vue商品列表无限加载内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论