【前端学习记录】关于使用el-table排序时,默认排序多请求一次的问题

vue el-table 前端js实现导出数据为Excel 使用 HTML 表格和 Blob,将数据动态生成为 HTML 表格,然后通过 HTML5 的 Blob 和 URL.createObjectURL 方法来创建一个链接,最后让用户点击链接下载生成的 Excel 文件。虽然不是真正的 Excel 文件,但可以在大多数情况下满足导出需求。 阅读详情

前言

element组件库经常会被使用到,el-table可以通过配置实现表格的排序。最近在写代码时遇到了个坑,记录如下

问题现象

先上代码

<el-table
        border
        ref="tableObj"
        class="w-100"
        :data="tableData"
        v-loading="isLoading"
        :default-sort="{prop: 'age', order: 'descending'}"
        :primaryKey="'id'"
        @sort-change="sortChange"
      >
        <el-table-column
          width="130"
          sortable="custom"
          prop="age"
          label="年龄"
          show-overflow-tooltip>
        </el-table-column>
</el-table>

// 使用的是vue2, 只摘了部分代码
sortChange(sort) {
    this.getTableData();
},

在代码中我设置了排序的方法sortChange,并设置了默认排序,当用户点击表格排序时,会触发排序方法,并重新发送请求,获取接口数据。

令人无奈的是,每次离开页面时就会多发一次请求, 该请求对用户来说,看起来没有什么影响,但是由于其请求参数的特殊性,导致在切换至部分页面时,多发的这个请求会报错。为了解决多发一次请求的问题,进行了如下的尝试。

尝试

经过定位,发现多发的这次请求,来自于sortChange,根据网上的解决方案,将默认排序即default-sort去掉即可解决该问题。具体的原理大家可以去看element的源码实现。

但是在测试时,发现如果用户手动选上按某个字段进行排序时,再离开页面仍然会请求两次。这表明上述解决方法不能从根本上解决问题。

于是考虑页面的生命周期,经过打印日志发现,离开页面时会先执行beforeDestroy,再执行sortChange,有了思路就好说了。

最终方案

部分代码如下:

export default {
 data() {
 	tableData: [],
 	isLoading: false,
 	pageDestroy: false,
 },
 beforeDestroy() {
 	this.pageDestroy = true;
 },
 methods: {
	sortChange(sort) {
		if (this.pageDestroyed) return;
	    this.getTableData();
	},
 }
}

Element UI el-table固定列错位问题:从原理到实战的完整解决方案 在前端开发中,表格组件是数据展示的核心元素,其渲染性能与视觉一致性直接影响用户体验。表格布局的实现原理涉及CSS盒模型、浏览器渲染引擎的重排与重绘机制,以及虚拟DOM的协同工作。理解这些底层机制对于解决复杂UI问题至关重要,尤其是在处理动态数据、响应式布局和跨浏览器兼容性时。el-table作为基于Vue的流行组件库Element UI的核心组件,其固定列功能通过DOM克隆和样式同步技术实现,但在实际工程实践中,常因**浏览器重排**和**组件生命周期时序**问题导致列错位。本文聚焦这一高频痛点,系统剖析其 阅读详情

相关推荐

【elementui】记录手动控制el-table的排序图标高亮

记录手动控制el-table的排序图标高亮

bbt953的博客 773

el-table中sort-change容易引发的bug之显示值与获取值不符合

el-table中sort-change出现排序不对的情况,解决方式

程序员小嗨 1621

Element UI表格进阶:手把手教你自定义el-table展开按钮样式与排序功能

本文详细介绍了如何深度定制Element UI的el-table组件,包括自定义展开按钮样式与优化排序功能。通过CSS-in-JS和模板插槽实现视觉重构,结合Map状态管理优化多级表格展开控制,并提供跨层级排序策略与性能优化方案,显著提升企业级前端开发的数据表格交互体验。

weixin_29008691的博客 119

elementUI中el-tabs组件接口多次请求解决方案

首先看代码: <template> <el-tabs v-model="activeName" type="card"> <el-tab-pane :label="item.title" :name="item.value" v-for="(item,index) in tabList" :key="index"> <DomesTic v-if="activeName === '1'"></DomesTic>

weixin_49518866的博客 5095

DAC60501与STM32的I2C通信实战:从寄存器配置到电压输出

本文详细介绍了如何使用STM32通过I2C通信驱动DAC60501数模转换器,实现精确的模拟电压输出。内容涵盖从硬件连接到软件模拟I2C驱动编写,再到DAC寄存器配置与电压计算的全流程实战指南,并提供了关键的驱动实例代码和常见问题调试技巧,帮助开发者快速掌握这一嵌入式开发中的实用技能。

weixin_29197835的博客 365

三角洲行动交易行自动化脚本

DFMarketBot - 三角洲行动自动交易助手 DFMarketBot是一款专为三角洲行动游戏设计的交易行自动化工具,通过OCR识别和鼠标模拟实现自动补卡、补子弹功能。项目采用Python开发,支持Windows平台,主要功能包括: 自动检测并购买指定物品(房卡/子弹) 价格监控与智能购买(低于设定价格自动下单) 自定义购买数量与次数限制 支持窗口/无窗口两种游戏模式 使用前需安装Tesseract OCR引擎并配置游戏为1920*1080分辨率。通过JSON文件可灵活配置监控物品清单、理想价格和购买策

愤怒的阿木木的博客 3万+

ant-design-vue中a-table列表数据根据点击的表头进行升/降排序

ant-design-vue中a-table列表数据根据点击的表头(哪一列)来对所有的数据进行升/降排序

Yukinoshita_kino的博客 1万+

【效率手册】Kylin-Desktop-V10-SP1 麒麟系统核心组件实战——从入门到精通的6个关键场景

本文针对Kylin-Desktop-V10-SP1麒麟系统用户,通过文件管理、系统监视、设置优化等6个核心场景实战,深度解析如何高效运用系统内置工具解决文件混乱、性能卡顿、外设驱动等实际问题,帮助用户从功能认知跃升至场景化应用,真正释放国产操作系统的生产力潜能。

weixin_29208327的博客 119

element-ui表格sort-change排序,当table部分数据为空null时,解决排序不起作用/错乱/不整齐的问题(支持字符串,数字排序)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

u013265669的博客 9402

NXP S32K3 Safety软件生态全解析:RTD、SPD、SAF、SCST到底怎么选?

本文深入解析NXP S32K3系列MCU的安全软件生态,详细对比RTD、SPD、SAF和SCST四大组件的功能定位与选型策略。针对不同ASIL等级需求,提供从架构设计到工程实践的完整解决方案,帮助开发者高效实现功能安全认证,优化汽车电子系统的安全性与可靠性。

weixin_42524226的博客 323

利用Solidworks2020将挖掘机装配体转换为URDF模型

利用Solidworks2020将挖掘机装配体转换为URDF模型一、下载sw_urdf_exporter插件 URDF(Universal Robot Description Format)——通用机器人描述格式,它是ROS里边使用的一种机器人的描述文件,包含的内容有:连杆、关节,运动学和动力学参数、可视化模型、碰撞检测模型等。 一、下载sw_urdf_exporter插件 ROS提供了SolidWorks转URDF的插件(下载链接)—sw2urdfSetup.exe,下载后点击安装,安装完成后就能在sol

weixin_48192326的博客 6100

【elementui】一招解决 el-table 重复写 loading 的问题

解决 el-table 重复写 loading 的问题

落叶无声的专栏 3148

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3919

【前端】vue3+ts+vite,el-table表格渲染记录重复情况

在使用vue的过程中,总会遇到一些有疑问的地方,总结就能够加深印象,下次再出现的时候也有个参考的地方。

小5聊的博客 1848

Win10内网离线安装NET3.5,绝对成功,保姆级

今天工作安装工具软件套装3.5组件!也在csdn上找了很多方法躺了很多坑,我总结如下! 其实就一条,什么版本的win10装什么版本的net3.5 我的电脑是1909版本,用2004H2的镜像是没有用的,dism组件报错8024402C 所以我下载1909镜像挂在虚拟光驱 ,管理员模式下powershell dism.exe /online /enable-feature /featurename:NetFX3 /Source:E:\sources\sxs dism.exe /online /en..

唉呀妈呀脑瓜疼 6万+

21、时间触发以太网:通信、诊断、故障隔离与参数化详解

本文详细解析了时间触发以太网(TTEthernet)的核心机制,包括团检测算法、诊断服务、故障隔离策略、配置服务以及协议参数化等内容。TTEthernet是一种专为超高可靠性系统设计的网络技术,广泛应用于航空航天、工业自动化和汽车电子等领域。文章还探讨了其未来发展趋势,如技术创新与生态建设,为开发者、企业和研究机构提供了应用与发展的方向。

efc12345678的博客 110

[element-ui]对el-table表格进行排序、分页、过滤

汇总一些表格的常用方法,比如排序过滤分页等等

xxuxioxx的博客 2479

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vue3 el-table动态列 default-sort无效 sortable排序无效

1、设置默认排序字段无效2、子元素数组里面的数据 点击排序 无效 没反应。

jiaojinnaozhier的博客 3569

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue2+elementUI table多个字段排序

vue2+elementUI table多个字段排序,初始化默认排序+支持多个同时亮起排序图标

a666666000的博客 397

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

elementUI table 多列排序并保持状态样式显示正确(无需修改源码)

本文解决了el-table实现多字段排序时样式被清除的问题。通过自定义multiOrder属性和headerCellClassName方法,在每次表头渲染时将multiOrder值赋给order属性,从而保留多个排序字段的样式状态。核心思路是:1)在sort-change事件中维护multiOrder状态;2)通过headerCellClassName方法在渲染时恢复被element源码清除的排序样式。这种方法巧妙地避开了element默认单列排序的逻辑,实现了多列排序状态的持久化显示。

a666666000的博客 574

谈谈 vue + element-ui 的后端排序

前言 element-ui 在 el-table 组件中提供了很多可用于排序的属性和方法,可用于前端排序或者后端排序。相对于前端排序,后端排序更复杂一些,也更常用一些。下面记录的是在实现后端排序时,实现多列排序的过程。 实现多列排序 为单列添加排序 根据 element-ui 的文档,可以很容易的实现一个后端排序。 使用 el-table 实现后端排序,需将 sortable 设置为 custom,同时在 table 上监听sort-change 事件,在事件回调中可以获取当前排序的字段名和排序顺序,从

qq_36291747的博客 3737

element table组件,使用checkbox控制表头的动态显示与隐藏后,排序恢复到默认状态的情况修复

在页面中,点击设置按钮在右边出现一个抽屉,在里面控制表头的动态显示与隐藏。当前端使用sortable属性给数据排序后,动态显示或隐藏的表头,会造成数据回到默认状态,不再根据设置的状态排序。具体如下图所示: 为了解决这个问题,我用了很多方法,包括对sort-change、sort-method以及default-sort属性的各种定义使用,但结果都不尽人意。因为当选择显示表头后,要关闭右边弹框,在关闭右边弹框定义的方法里面使用上面三个方法都没有生效,基本上都是因为这几个方法的参数的原因。 后来在想ele.

二三的博客 1298

探索table-dragger核心功能:列排序、行排序与自由拖拽全解析

想要让你的HTML表格拥有魔法般的拖拽排序功能吗?table-dragger正是你需要的终极解决方案!这个轻量级的JavaScript库能够将普通的静态表格瞬间转变为支持拖拽排序的交互式表格,让你的数据展示更加灵活便捷。😊 ## 什么是table-dragger? **table-dragger**是一个极简主义的纯JavaScript库,专门用于构建可重新排序的拖拽表格。无论你是前端开发新

gitblog_00612的博客 404

【前端】项目中遇到的问题汇总(长期更新)

【长期更新】前端项目中常遇到的问题汇总(vue3+elementPlus+node.js+axios+webpack)

sinat_39394862的博客 1237

不只是换组件:从el-table迁移到u-table,我踩过的样式坑和性能调优心得

本文详细介绍了从el-table迁移到u-table的实战经验,重点解决了样式兼容性和性能调优问题。通过虚拟滚动技术,u-table在万级数据场景下表现优异,同时提供了深度样式定制和动态高度适配方案,帮助开发者提升表格组件的渲染效率和用户体验。

weixin_30924239的博客 214

如何快速实现Element UI表格无限滚动?el-table-infinite-scroll完整指南

**el-table-infinite-scroll** 是一款专为Vue和Element UI设计的高效无限滚动表格插件,能帮助开发者轻松实现大数据表格的滚动加载功能,无需一次性加载全部数据,显著提升页面响应速度和用户体验。 ## ???? 核心功能与优势 ### ✅ 轻量化设计,性能卓越 - 仅需几行代码即可集成,不依赖复杂配置 - 智能监听滚动事件,仅在需要时加载数据 - 完美兼容Eleme...

gitblog_01071的博客 976
上一篇: 【前端学习记录】webpack学习之mini-css-extract-plugin插件
下一篇: 【前端学习记录】记一次升级webpack5的踩坑经历
Note_creek
博客等级 码龄10年 372粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值