El-table组件实现懒加载

news/2024/10/1 15:21:50

背景

有的时候我们表格的数据不想使用分页组件展示,想要显示所有的数据,但是显示所有数据会导致服务器负荷严重(比如CPU过载),我们可以使用懒加载的形式,此方式利用监听是否滚动到元素底部,如果到元素底部就去请求下一页的数据

原理

效果图

示例代码

<template><div class="app"><!-- 思路:表格设置固定高度默认加载10条数据对表格容器进行滚动事件的监听,监听是否到达底部,如果到达底部则往表格追加数据--><h1>表格-懒加载</h1><el-table:data="table_data"borderstyle="width: 100%"height="400"ref="tableRef"><el-table-column prop="date" label="日期" width="180"> </el-table-column><el-table-column prop="name" label="姓名" width="180"> </el-table-column><el-table-column prop="address" label="地址"> </el-table-column></el-table></div>
</template><script>
export default {data() {return {table_data: [],// 获取第几条数据开始,然后取多少条query_info: {start: 0,limit: 10,},table_total: 0,}},created() {this.fetchPersonData()},mounted() {this.setTableLazyLoading()},methods: {fetchPersonData() {const params = {...this.query_info,}// 模拟服务器返回的数据getPeronList(params).then(() => {const data = []// 这里是模拟的可以不用管,到时服务端是会返回正确的数据for (let i = this.query_info.start;i < this.query_info.start + this.query_info.limit;i++) {data.push({date: '2024-05-09',name: `测试${i}`,address: 'gz',})}// 假设返回的总数this.table_total = 54this.table_data.push(...data)})function getPeronList() {return new Promise((resolve, reject) => {setTimeout(() => {resolve()}, 300)})}},setTableLazyLoading() {const table_el = this.$refs.tableRef.$elconst dom = table_el.querySelector('.el-table__body-wrapper')dom.addEventListener('scroll', () => {const bottom_distance =dom.scrollHeight - dom.scrollTop - dom.offsetHeight// console.log('距离底部的距离:', bottom_distance)if (bottom_distance == 0 && this.query_info.start <= this.table_total) {this.query_info.start = this.query_info.start + this.query_info.limitthis.fetchPersonData()}})},},
}
</script><style lang="less" scoped></style>

参考文档

  • https://blog.csdn.net/Seven71111/article/details/120739925

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion 发型提示词,美学探索

通过使用发型提示词,可以在生成图片时更准确地描述所需的发型特征。这些提示词包括各种发型类型,从卷发到短发,甚至特定的颜色和风格。通过结合正面和负面提示词,可以确保生成的图片符合预期,避免不合适的内容出现,并介绍一些提示词工具来打造个性化的图像描述。 如何使用…

在阿里云服务器中搭建一个 Ghost 博客

Ghost 是一个基于 Node.js 开发的免费开源博客平台,用于简化博客的写作发布等流程。本文介绍如何在阿里云的 Ubuntu 20.04 操作系统的轻量应用服务器上部署 Ghost 博客(在其他服务器比如 ECS 也是差不多的步骤,主要是 Node.js 环境要选对)。 Ghost 搭建概述 Ghost 官方推荐…

Scurm冲刺第四天

Scurm冲刺第四天 1. 站立式会议内容昨日已完成任务 今日计划完成任务首页代码设计实现 前端UI设计代码编写(收藏页面,商品详情页,个人中心页)后端用户功能模块的购物车,收藏和个人中心操作功能 后端管理员模块功能实现(登录注册功能,用户管理功能,个人中心操作)跟进前后…

【专题】2022年中国企业数字化学习行业研究报告PDF合集分享(附原数据表)

报告链接:http://tecdat.cn/?p=32263 多变,不确定性,复杂,模糊不清的新业务图景,加快了公司人才发展模式的数字化转变;疫情冲击离线运输与公司现金流量,消费者支出减少,机构表现受压,数字化学习突破;行业数字化水平不断提高,商业体系和学习体系之间的关联性不断加强…

敏捷冲刺-5月8日

敏捷冲刺-Day-03所属课程 软件工程2024作业要求 团队作业4—项目冲刺作业目标 完成第 3 篇 Scrum 冲刺博客冲刺日志集合贴 https://www.cnblogs.com/YXCS-cya/p/181788031.项目燃尽图 1.1 第三日-5月8日进度 当前进度较慢2.会议记录 2.1 会议主题 第 3 天 Scrum 冲刺-项目冲刺 …

Homework 7

1.尝试建模电梯的状态图2.学校规定:一个学生可选修多门课,一门课有若干学生选修; 一个教师可讲授多门课,一门课只有一个教师讲授; 一个学生选修一门课,仅有一个成绩。 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。 要求:根据…

安装oh-my-zsh(命令行工具)

目录一、安装zsh、git、wget二、安装运行脚本1、curl/wget下载2、手动下载三、切换主题1、编辑配置文件2、切换主题四、安装插件1、zsh-syntax-highlighting(高亮语法错误)2、zsh-autosuggestions(自动补全)五、更多优化配置 一、安装zsh、git、wget安装oh-my-zsh的前提需要…