当前位置: 首页 > 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属性更为便捷,如果需要修改原有历史数据数组保存 数据更方便。

http://www.xdnf.cn/news/977293.html

相关文章:

  • 黑马教程强化day2-1
  • JAVA毕业设计227—基于SpringBoot+hadoop+spark+Vue的大数据房屋维修系统(源代码+数据库)
  • Linux 文件内容的查询与统计
  • xilinx的gt的ALIGN_COMMA_WORD设置的作用
  • UE5 学习系列(五)导入贴图资产
  • 纯血Harmony NETX 5小游戏实践:2048(附源文件)
  • vuetify、nuxt报错lh.at is not a functionlh.at‘ is undefined
  • R语言 | 如何使用R书写html文档?
  • 打造超轻量的仿chatgpt的AI聊天应用
  • IDEA 连接 Docker 一键打镜像
  • LHM深度技术解析:基于多模态Transformer的单图秒级可动画3D人体重建模型
  • 2025.06.11【Ribo-seq】|根据注释文件获取外显子及ORF序列
  • Unity基础-Resources资源动态加载
  • 大模型在输尿管上段积脓预测与治疗方案制定中的应用研究
  • 传输层协议TCP(下)
  • AJAX、Axios 与 Fetch:现代前端数据请求技术对比
  • 提升iOS开发效率:通过KeyMob等工具进行全面性能分析与调试
  • 解决windows下pycharm终端conda无法激活虚拟环境问题
  • IntelliJ IDEA代码提示忽略大小写设置详解
  • TRO警报,Kim Haskins维权进行时:卖猫周边或面临TRO冻结?
  • 【群体结构ADMIXTURE之三】监督分群在祖先成分分析中的应用及原理
  • 建站SEO优化之站点地图sitemap
  • 调试`build.sh` 和用 `CMake` 编译出来的 `.elf` / `.bin` / `.hex` 文件大小或行为不同?
  • 重构技术奇点的路径:三智双融认知大飞跃
  • 如何设计一个用于大规模生产任务的人工智能AI系统
  • OpenSSL 无法验证 DevSidecar 的自签名证书
  • 【数据结构】图论最短路圣器:Floyd算法如何用双矩阵征服负权图?
  • Go 协程(Goroutine)入门与基础使用
  • Go 的 fs 包(1/2):现代文件系统抽象
  • 零基础玩转物联网-串口转以太网模块如何快速实现与HTTP服务器通信