vue element-ui v-infinite-scroll懒加载,加载更多,上下滑动加载更多

23 篇文章 0 订阅
13 篇文章 0 订阅

vue element-ui v-infinite-scroll懒加载,向上下滑动加载更多

其实这种滑动加载更多数据就是另外一种的常见分页功能,常见于v-for循环渲染出来的列表内容

首先先看下后端返回内容结构,和前端传的所需参数
第一次触发下拉事件,pageIndex = 2是没毛病的
在这里插入图片描述
第一次下拉后端接口返回参数,每次新增10条,第一次下拉,pageNum = 2
在这里插入图片描述
加载时候得loading效果
在这里插入图片描述

<template>
    //容器盒子
            <div v-infinite-scroll="load" infinite-scroll-disabled="disabled"  infinite-scroll-distance="20"   class="videoLister"  >
               <div v-for="(item , index1) in dataList"
                :key="index1"
                track-by="$index"
                class="concreteSec" >
                <div class="courseTit">
                  <div class="footdivs">                   
                        <div class="cishu">{{item.clickNum == null ? 0 : item.clickNum}} 数量</div>
                   </div>
                </div>
            </div>
            //下拉加载时候加loading旋转动效
            <div v-if="loading" style="margin-top:10px;" class="loading">
                  <span></span>
            </div>
            //加载完成,提示语句
            <div v-if="noMore" style="margin:10 auto; text-align: center; font-size:18px;font-weight: 550; color:#000000">----我是有底线的----</div>
        </div>
</template>
<script>
  import { InfiniteScroll } from "element-ui"
   export default {
       directives: {
        	"infinite-scroll": InfiniteScroll,
     },
     data() {
        return{
              dataList: [],  //渲染数据数组
              loading: false,  //加载时的动画
		      pages:1,     //滚动加载默认显示第一页
		      pageIndex:1  //分页查询后端所需参数,【确认后端所需的参数名,有的接口不一样,根据实际情况而定】,
	
       }
    },
    //计算
     computed:{
      noMore() {
         //当起始页数大于总页数时停止加载
         return this.pageIndex >= this.pages ;
      },
      disabled() {
         return this.loading || this.noMore;
      }
    },
     created() {
        this.getList()
    },
     methods: {
               //下拉加载事件
       load() {
            //滑到底部时进行加载
            this.loading = true;
            setTimeout(() => {
               let obj = {
                 resourceType: 1,    //查询数据所需参数,忽略
                 pageIndex:this.pageIndex+1,   //pageIndex此参数根据自己实际情况,分页所需参数有的接口不一样
                 pageSize:10, //每页查询的条数
               }
               getResourcesByClick(obj)
                 .then((res) => {
                   let pageInfo = res.data
                   pageInfo.list.forEach(e=>{
                     this.dataList.push(e)
                   })
                   this.pageIndex = pageInfo.pageNum        
                   this.loading = false;
                 })
                 .catch((error) => {
                     console.log(error)
                 })
              }, 1500);
        },
        //渲染列表
      getList() {
        let obj = {
          resourceType: 1,
          pageIndex:1,   //此参数一定要确认好,传错肯定运行效果出错
          pageSize:10, //每页查询的条数
        }
        //this.url = ''
        getResourcesByClick(obj)
          .then((res) => {
            let pageInfo = res.data
            pageInfo.list.forEach((el)=>{
              this.dataList.push(el)
            })
            this.pages = res.data.pages
            this.loading = false;
          })
          .catch(() => {})
      },
     }
  }
 </script> 
 //加载时候转圈的动效
 <style>
 .loading{
    text-align: center;
}
.loading span {
  display: inline-block;
  width: 35px;
  margin: 0 auto;
  height: 35px;
  border: 3px solid #409eff;
  border-left: transparent;
  animation: zhuan 0.5s linear infinite;
  border-radius: 50%;
}
@keyframes zhuan {
  0% {
    transform: rotate(0);
  }
  100% {
    transform: rotate(360deg);
  }
}
 </style>
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Element Infinitescroll(元素无限滚动)是一种在网页或移动应用程序中实现内容无限滚动加载的技术。当用户滚动页面时,新的内容会动态加载到页面上,使用户可以无限地浏览内容,而不需要手动点击加载更多按钮或翻页。 Element Infinitescroll的实现主要依赖于JavaScript和AJAX技术。通过监测用户滚动事件,当用户滚动到页面底部时,JavaScript会向服务器发送AJAX请求,请求新的内容数据。收到响应后,JavaScript将新的内容添加到页面中,实现无限滚动加载的效果。 使用Element Infinitescroll有以下几个优点: 1. 提升用户体验:用户不需要点击按钮或翻页来加载更多内容,只需要滚动页面即可。这种无缝地加载新内容的方式可以提高用户的满意度和使用体验。 2. 提高网站性能:相比传统的一次性加载大量内容,Element Infinitescroll只在需要时加载新的内容,减少了页面的加载时间和渲染开销,提高了网站的性能。 3. 节省流量和资源:由于只加载当前可见区域的内容,Element Infinitescroll可以节省用户的流量消耗,并减轻服务器的负担。 4. 适用于大数据量的网站或应用:对于内容庞大的网站或应用来说,使用传统的加载方式会导致页面过长和加载时间过长,而Element Infinitescroll可以只加载当前需要展示的部分内容,提升了浏览的效率。 总之,Element Infinitescroll是一种在网页或移动应用中实现无限滚动加载内容的技术,通过动态加载新的内容提升用户体验,减少页面加载时间和资源消耗,适用于大数据量的网站或应用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值