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

目录

InfiniteScroll 无限滚动

基本用法

详细说明

v-infinite-scroll 指令

infinite-scroll-disabled 属性

infinite-scroll-distance 属性

总结


需求背景 :

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

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

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

    前端:懒加载,也就是 需借助 Element|InfiniteScroll 无限滚动组件 来实现一个下拉至列表底部时,向后端请求下一页的数据用于拼接至列表数组。

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

InfiniteScroll 无限滚动

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

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

基本用法

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

项目示例 :

src / views / statistics / index.vue

<template><div><DefaultReportv-if="dataList.length > 0":dataList.sync="dataList":loading.sync="loading":noMore="noMore"@getDataList="getDataList"/></div>
</template><script>
import DefaultReport from './component/DefaultReport';
import { getStatisticsData } 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 getStatisticsData(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>

src / views / statistics / component / DefaultReport.vue

<template><div class="infinite-list-wrapper" style="overflow: auto"><ulclass="list"v-if="dataList.length > 0"v-infinite-scroll="loadMore"infinite-scroll-disabled="loadDisabled"><!-- :infinite-scroll-disabled="loadDisabled" --><li v-for="i in dataList" class="list-item" :key="i"><!-- 展示数据的内容 -->{{ i }}</li></ul><p v-if="loading">加载中...</p><p v-if="noMore">没有更多了</p><p v-if="dataList.length === 0">抱歉,暂无数据</p></div>
</template><script>
export default {props: {dataList: {type: Array,default: () => [],},loading: {// 标记数据是否正在加载中type: Boolean,default: false,},noMore: {// 是否继续加载type: Boolean,default: false,},},data() {return {// count: 10,// loading: false,setFormData: {surveyId: '',currentPage: 1, // 当前页数},};},computed: {// noMore() {//   return this.count >= 20;// },loadDisabled() {// 是否禁用(false停止加载)return this.loading || this.noMore;},rqObj() {return this.$route.query || {};},},created() {if (this.rqObj.id && this.rqObj.id !== null) {this.setFormData.surveyId = this.rqObj.id;}},methods: {// 滚动加载方法(在这里进行数据加载操作)loadMore() {if (this.noMore) return;this.$emit('update:loading', true);this.setFormData.currentPage++;if (this.$parent.getDataList) {this.$parent.getDataList(this.setFormData);} else {this.$emit('getDataList', this.setFormData);}// this.loading = true;// setTimeout(() => {//   this.count += 2;//   this.loading = false;// }, 2000);},},
};
</script><style lang="scss" scoped>
.infinite-list-wrapper {.list {min-height: 800px;overflow-y: auto;}
}
</style>

详细说明

v-infinite-scroll 指令

    在要实现滚动加载的列表上上添加 v-infinite-scroll ,并赋值相应的加载方法,可实现滚动到底部时自动执行加载方法。

v-infinite-scroll 指令用于绑定一个滚动到底部时要触发的方法。

  • 示例:v-infinite-scroll="loadMore"
  • loadMore 是一个方法,当页面滚动到底部时会自动调用该方法。

infinite-scroll-disabled 属性

infinite-scroll-disabled 属性用于动态控制是否禁用无限滚动。

  • 示例:infinite-scroll-disabled="loadDisabled"
  • loadDisabled 是一个数据变量,用于标记数据是否正在加载中。当变量值为 true 时,禁用无限滚动。

infinite-scroll-distance 属性

infinite-scroll-distance 属性用于控制触发加载的距离。

  • 示例:infinite-scroll-distance="0"
  • 0 表示距离底部还有 0 个像素时触发加载。

总结

    通过 Element Infinitescroll ,我们可以方便地实现页面的无限滚动效果。

只需要使用 v-infinite-scroll 指令绑定方法,控制 infinite-scroll-disabled 属性

和 infinite-scroll-distance 属性,我们就可以加载更多的数据,提升用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/318961.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iOS安全】JS 调用Objective-C中WKWebview Handler的三种方式

有三种实现途径 1. WKScriptMessageHandler OC部分&#xff1a;注册并实现Handler 将OC中的方法"nativeMethod"注册为JavaScript Message Handler&#xff0c;从而WebView中的JavaScript代码可以调用该方法 // Register in Objective-C code - (void)setupWKWebVi…

Linux的systemctl命令

Linux系统很多软件均支持使用systemctl命令控制&#xff1a;启动、停止、开机自启 形式&#xff1a; systemctl start | stop | status | enable | disable 服务名 enable : 自启动 disable : 关闭自启动 系统内置的服务比较多&#xff0c;比如&#xff1a; NetworkManage…

打造高效会员卡营销策划方案,提升门店业绩

在激烈的行业竞争中&#xff0c;如何有效提升店铺的业绩&#xff0c;提高客户粘性和消费频次呢&#xff1f;答案可能就在你手中——那就是有效的会员卡营销策略。下面给大家探讨如何设计会员卡营销策划方案&#xff0c;从而增加客户的忠诚度&#xff0c;并推动销售增长。以目前…

Springboot通过profiles切换不同环境使用的配置

文章目录 简介1.通过分隔符隔离2.通过使用不同的配置文件区分3.测试 简介 一个项目从开发到上线一般要经过几个环境, dev测试环境-uat预生产环境-prod生产环境&#xff0c;每个环境的使用的数据库或者配置不同&#xff0c;这时候可以通过下面两种方式区分配置,达到快速切换的效…

Cytoscape3.9安装包下载及安装教程

Cytoscape3.9下载链接&#xff1a;https://docs.qq.com/doc/DUldkdndLdlJ2TlJJ 1、选中下载好的安装包&#xff0c;右键选择解压到【Cytoscape3.9.1】文件夹 2、双击打开【OpenJDK11U-jdk_x64_windows_hotspot_11.0.7_10.msi】 3、点击【下一步】 4、勾选【我接受许可协议】&am…

APPnium 自动化实践 :第一步adb 连接手机

1. 下载安装 adb ,添加到环境变量。 ADB Download - Get the latest version of ADB and fastboot 2. 手机开启开发者模式 https://developer.huawei.com/consumer/cn/doc/quickApp-Guides/quickapp-open-developer-option-0000001137005543 3. adb 连接设备 【And…

【电商项目实战】实现订单超时支付取消

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《电商项目实战》。&#x1f3af;&#x1f3af; &am…

Little Snitch 5 for Mac(小飞贼系统安全防火墙软件) 支持M1

Little Snitch 5 for Mac是一款强大的防火墙软件&#xff0c;为Mac用户提供了全面的网络保护和隐私控制。该软件的核心功能是监控和管理应用程序对网络的访问权限。 Little Snitch 5可以实时监测应用程序的网络活动&#xff0c;并通过弹出窗口显示访问权限请求。用户可以根据需…

学习调整echarts中toolbox位置toolBox工具栏属性

学习调整echarts中toolbox位置toolBox工具栏属性 toolbox工具栏属性介绍示例代码代码参数说明 toolbox工具栏属性介绍 参考网址&#xff1a;https://echarts.apache.org/zh/option.html#tooltip 属性类型说明toolbox.showbooleanboolean 默认值为true&#xff0c;是否显示工具…

安装Keras用于影像分割

conda create -n tfkeras2024 python3.9.18 activate tfkeras2024 pip install tensorflow-gpu2.9.0 pip install keras pip install scipy pip install ipykernel ipython python -m ipykernel install --name tfkeras2024 删除环境conda remove -n tfkeras2024 --all

运输层

title: 运输层 date: 2023-12-24 14:17:55 tags: 知识总结 categories: 计算机网络 运输层和网络层的联系和区别 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信&#xff0c;但实际上&#xff0c;在计…

Power Automate删除SharePoint Online或OneDrive for Business文件版本历史

SharePoint Online和OneDrive for Business支持版本控制&#xff0c;可以保留文件的版本历史&#xff0c;方便用户随时查看和恢复以前的版本。但该功能也会占用大量SharePoint Online或OneDrive for Business存储空间。官方删除版本历史的方法无法批量操作&#xff0c;故今天提…