Element|InfiniteScroll 无限滚动组件的具体使用方法

本文介绍了在PC端和移动端使用Element的InfiniteScroll组件进行无限滚动加载的方法,包括v-infinite-scroll指令、infinite-scroll-disabled属性和infinite-scroll-distance属性的详细使用。同时,针对页面滚动条问题提出了解决方案,并分享了在移动端如何利用Vant List组件实现类似功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

PC 端 : 

InfiniteScroll 无限滚动

详细说明

v-infinite-scroll 指令

infinite-scroll-disabled 属性

infinite-scroll-distance 属性

总结

使用弊端 :

尝试解决 :

代码实现 :

移动端 :

List 列表


需求背景 :

        列表页面,由于数据量过多时 在 IE 浏览器上面会加载异常缓慢,刚进入时页面空白无数据,导致用户体验感较差,所以需要整改优化。

    这里就需要 前后端 联调 调整 了,

    后端:需将接口由原来的传给前端的全部数据方式调整为 “分页传输” 方式,也就是前端再多传给后端两个字段值:currentPage:1,// 当前页数;pageSize:10,// 一页显示的条数( 当然这里我们是由后端写死了:5,一页固定传给前端 5 条数据,所以前端此字段可以不传 )

    前端:进行 懒加载 处理,也就是 需借助 Element|InfiniteScroll 无限滚动 组件 来实现一个下拉至列表底部时,向后端请求下一页的数据用于拼接至列表数组后再次展示新的内容。【 PC 端 】

      接下来就让我们来 了解 & 如何使用 吧:( 可参考 组件的 禁用加载 示例 )


    前端:懒加载,移动端 需借助 Vant 2 |List 列表 组件 |基础用法 来实现一个下拉至列表底部时,向后端请求下一页的数据用于拼接至列表数组。


PC 端 : 

InfiniteScroll 无限滚动

滚动至底部时,加载更多数据。

    在前端开发中,很多页面都需要实现无限滚动的效果,即当页面滚动到底部时,自动加载更多的数据。Element Infinitescroll 是一款方便易用的 Vue 组件,可以帮助我们快速实现无限滚动功能。

基本用法

Element Infinitescroll 提供了一个 v-infinite-scroll 指令,可以直接在需要无限滚动的元素上使用。

<template>
  <div>
    <DefaultReport
      v-if="dataList.length > 0"
      :dataList.sync="dataList"
      :loading.sync="loading"
      :noMore="noMore"
      @getDataList="getDataList"
    />
  </div>
</template>

<script>
import DefaultReport from './component/DefaultReport';
import { getStData } from '@api/listApi.js';

export default {
  components: { DefaultReport },
  data() {
    return {
      loading: false, // 列表加载中...
      noMore: false, // 没有更多了
      dataList: [], // 页面数据
      setFormData: {
        surveyId: '',
        currentPage: 1, // 当前页数
      },
    };
  },
  computed: {
    rqObj() {
      return this.$route.query || {};
    },
  },
  created() {
    if (this.rqObj.id && this.rqObj.id !== null) {
      this.setFormData.surveyId = this.rqObj.id;
      this.getDataList(this.setFormData);
    }
  },
  methods: {
    async getDataList(data) {
      let res = await getStData(data);
      const { code, result } = res;
      if (code === '0') {
        if (result.lists && result.lists.length > 0) {
          this.dataList = this.dataList.concat(result.lists);
        }
        this.loading = false;
        // 加载完成后需要将loading设置为false,以便下次触发加载
      } else {
        // 没有更多数据了(需停止继续加载)
        this.loading = false;
        this.noMore = false;
      }
    },
  },
};
</script>

<style lang="scss" scoped></style>
<t
InfiniteScrollElement 组件库中的一个组件,它可以实现在滚动到页面底部时自动加载更多数据的功能,常用于展示长列表或分页数据。 在 Vue 实例中使用 InfiniteScroll 组件,需要先在组件中引入它: ```js import { InfiniteScroll } from 'element-ui'; export default { directives: { InfiniteScroll }, // ... } ``` 然后,将 InfiniteScroll 组件作为一个自定义指令绑定到需要实现无限滚动的元素上。例如,将其绑定到一个包含数据列表的 `ul` 元素上: ```html <ul v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance="10"> <li v-for="item in list" :key="item.id">{{ item.text }}</li> </ul> ``` 在这个例子中,`v-infinite-scroll` 指令绑定了一个名为 `loadMore` 的方法,它会在滚动到页面底部时被触发,用于加载更多数据。`infinite-scroll-disabled` 属性指定了一个布尔值,用于控制是否禁用无限滚动功能。`infinite-scroll-distance` 属性指定了一个数字,表示滚动到页面底部的距离阈值,当滚动距离小于该值时,不触发 `loadMore` 方法。 最后,在 Vue 实例中定义 `loadMore` 方法,用于加载更多数据。例如,可以在该方法中向服务器发送 AJAX 请求,获取更多数据并将其添加到数据列表中: ```js export default { directives: { InfiniteScroll }, data() { return { list: [], // 数据列表 loading: false, // 是否正在加载数据 page: 1, // 当前页码 pageSize: 10, // 每页数据量 }; }, methods: { async loadMore() { if (this.loading) return; // 如果正在加载数据,则不执行 this.loading = true; // 标记为正在加载数据 try { const res = await axios.get('/api/data', { params: { page: this.page + 1, pageSize: this.pageSize, }, }); this.list.push(...res.data); // 将新数据添加到列表中 this.page += 1; // 更新页码 } catch (err) { console.error(err); } this.loading = false; // 标记为加载数据完成 }, }, }; ``` 这样,当用户滚动到页面底部时,就会触发 `loadMore` 方法,从服务器获取更多数据并将其添加到列表中,实现无限滚动的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值