当前位置: 首页 > news >正文

element-ui 的el-table,多选翻页后,之前选择的数据丢失问题处理

问题描述

在使用Element UI的el-table组件时,开启多选功能后,当切换分页或重新加载数据时,之前选中的数据会丢失。这是由于表格在重新渲染时未保留之前的选择状态。

解决方案

1.手动存储历史

利用一个数组来保存所有选中的数据,而不仅仅是当前页的数据。

<el-tableref="multipleTable":data="tableData"@select = "rowSelectChange"
><el-table-columntype="selection"width="55"></el-table-column><!-- 其他列 -->
</el-table><script>
const ids = ref([])
const rowSelectChange=(selection: UserVO[], row: UserVO)=>{// 判断是否选中,选中ids增加,取消选中ids删除if(selection.filter(item=>item.userId == row.userId).length>=1){ids.value.push(row.userId)}else{ids.value = ids.value.filter(item=>item!=row.userId)}
}const initIds=()=>{// initSelectUsers 为默认已经选中的idsprops.initSelectUsers?.forEach(userItem => {ids.value.push(userItem)});
}
</script>

2.使用row-key和reserve-selection

对于需要跨页保持选中状态的场景,可以给表格设置row-key并启用reserve-selection属性。这需要确保每行数据有唯一标识(如id)。

<el-tableref="multipleTable":data="tableData":row-key="getRowKeys"@selection-change="handleSelectionChange"
><el-table-columntype="selection"width="55":reserve-selection="true"></el-table-column><!-- 其他列 -->
</el-table><script>
const ids = ref([])
const handleSelectionChange = (selection: UserVo) => {ids.value = selection.map((item) => item.userId);
}
const getRowKeys=(row:UserVO)=>{return row.userId;
}
</script>

注意事项
  • 使用reserve-selection时,必须指定row-key且数据中的该字段必须唯一。
  • 跨页选中会占用内存,数据量过大时建议采用服务器端保存选中状态。

总结

以上可以有效解决分页时选中丢失的问题,对于简单场景,使用reserve-selection属性更为便捷,如果需要修改原有历史数据数组保存 数据更方便。

相关文章:

  • Flutter - 原生交互 - 相机Camera - 02
  • 深度学习小项目合集之音频语音识别-视频介绍下自取
  • Flutter 常用组件详解:Text、Button、Image、ListView 和 GridView
  • 【编译工具】(版本控制)Git + GitHub Actions:自动化工作流如何让我的开发效率提升200%?
  • 深度强化学习 | 详细推导随机/确定性策略梯度定理
  • `dispatch_source_t` 计时器 vs `NSTimer`:核心差异一览
  • React 18 渲染机制优化:解决浏览器卡顿的三种方案
  • 应用无法获取用户真实ip问题排查
  • 前端面试宝典---事件循环面试题
  • 现代数据工程实践:基于Dagster的ETL架构设计与实现
  • 【全开源】码小象租车系统源码+uniapp前端+开发文档接口
  • python数据结构和算法(5)
  • P1216 [IOI 1994] 数字三角形 Number Triangles
  • 7.Vue的compute计算属性
  • 【VBA】把目录及子目录下所有doc/docx转换为pdf格式
  • synchronized 学习序章
  • 第三章支线五 ·组件之城 · 构建与复用的魔法工坊
  • 鹰盾加密虚拟机保护技术的深度解析:从指令级虚拟化到动态对抗系统
  • 【一文理解】下采样与上采样区别
  • 代码随想录算法训练营第60期第六十四天打卡
  • 网页制作与网站建设实战大全/班级优化大师
  • 网站商城建设要多少钱/搜索引擎优化介绍
  • 专业的网站设计公司/镇江搜索优化技巧
  • 网站建设1001网站建设/北京百度seo点击器
  • 商城网站建设哪家公司好/黑马培训机构
  • 招聘网站做鸭子的/百度快照怎么弄