商品列表无限加载

实现商品列表无限加载功能

需求:例如在商品列表页鼠标向下滑动自动监听去掉接口老数据新数据拼接展示,加载完毕结束监听

第一步 使用elementui中InfiniteScroll 无限滚动组件
第二步 如果数据加载完成了则停止监听

// 核心代码添加 v-infinite-scroll属性 自定义load方法
<template>
  <ul class="infinite-list" v-infinite-scroll="load" infinite-scroll-disabled="disabled" style="overflow:auto">
    <li v-for="item in goodsList" class="infinite-list-item">{{ item .name }}</li>
  </ul>
</template>

<script>
import { getGoodsApi } from '@/api/goods.js';
  export default {
    data () {
      return {
        count: 0,
        disabled: false,
        goodsList: [],
        params: {
			page: 1,
			pageSize: 20
		}
      }
    },
    mounted() {
     // 获取商品数据
     this.getGoodsList()
    },
    methods: {
      getGoodsList() {
      	getGoodsApi(this.params).then(res=>{
			this.goodsList = res.data;
		})
      },
      //鼠标下滑触发这个事件
      load () {
      	this.params.page++;
      	let temp = [];
        getGoodsApi(this.params).then(res=>{
			temp = res.data;
			//如果查询下一页没有数据则说明到底了temp 则为空数组,重新给disabled赋值为true,停止无限滚动InfiniteScroll 的监听			
			if(temp.length == 0) {
				this.disabled = true;
			}
		})
		//会使用原来的老数据和新数据
        this.goodsList = [...this.goodsList, ...temp]
      }
    }
  }

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

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值