element-plus动态增减el-table表格列样式错乱问题

写了一个组件,功能是根据展示设置的勾选状态动态增减表格列,发现列宽没有重新计算,找了半天,原来是key的问题

刚开始key写的是:key="index",发现时好时坏,有时候重新渲染有时候不会,因为新添加的未存在的index的话会重新渲染,初始化已存在的index则不会重新渲染。

过程中还试过doLayout()方法也不行,真是郁闷,原来是key需要绑定为prop

真是看了半天,坑死了

在使用 `element-plus` 的 `el-table-column` 组件时,如果需要动态设置表格索引列的样式,可以通过以下方式进行实现: 1. **使用 `type="index"` 定义索引列** 在 `el-table-column` 中通过设置 `type="index"` 来定义该列为索引列。此列会自动填充行号(从 1 开始)。 2. **使用 `:show-overflow-tooltip` 和 `:cell-class-name` 动态控制单元格样式** - 可以通过 `:cell-class-name` 属性为索引列的单元格动态绑定自定义类名。 - 结合 CSS 样式,可以实现对索引列样式的灵活控制。 示例代码如下: ```vue <template> <el-table :data="tableData" style="width: 100%"> <!-- 索引列 --> <el-table-column type="index" label="序号" width="80" :cell-class-name="indexCellClassName" ></el-table-column> <!-- 其他数据列 --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table-column> </template> <script setup> import { ref } from 'vue'; const tableData = ref([ { name: '张三', age: 25 }, { name: '李四', age: 30 }, { name: '王五', age: 28 } ]); // 动态设置索引列单元格的类名 const indexCellClassName = (row) => { // row.$index 表示当前行的索引(从 0 开始) return row.$index % 2 === 0 ? 'even-row' : 'odd-row'; }; </script> <style scoped> .even-row { background-color: #f5f7fa; } .odd-row { background-color: #eef1f6; } </style> ``` ### 关键点说明: - `type="index"` 用于声明该列为索引列,会自动显示行号。 - `:cell-class-name` 接收一个函数,用于根据行索引动态返回类名,从而应用不同的样式- 在 `style` 部分定义了 `.even-row` 和 `.odd-row` 的背景色,实现了索引列的动态样式效果[^1]。 ### 注意事项: - 如果希望更复杂的样式控制,例如根据数据内容动态改变字体颜色或边框,可以在 `indexCellClassName` 函数中添加更多逻辑,并结合对应的 CSS 类进行处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值