element plus el-table 实现单选较简单写法

本文指导如何将el-table组件从多选切换到单选模式,通过在el-radio标签内添加隐藏节点解决选中时label显示问题,适合前端开发者参考。

element plus el-table 其实官网是有实现单选的配置选项的,就是通过highlight-current-row和 current-change实现的,只不过,他是通过高亮实现选中状态的,感觉对用户来说不是很明显。下面是一种左侧仍显示选择框的一种较简单写法。

<el-table
   class="single-select"
   ref="tableRef"
   @selection-change="handleSelectionChange"
>

    <el-table-column type="selection" />
    <el-table-column label="序号" type="index" />
    <el-table-column label="商品编码" prop="skuCode"  />
    <el-table-column label="商品名称" prop="skuName/>
</el-table>
tableRef = ref()

function handleSelectionChange(val) {
    if (val.length >= 2) {
      const lastIndex = val.length - 1
      // 清空所有已选择的,然后选最后一项
      unref(tableRef)?.clearSelection()
      unref(tableRef)?.toggleRowSelection(val[lastIndex])
      val = [val[lastIndex]]
    }
    aSelect.value = val
}
// 通过样式隐藏头部全选按钮
.single-select :deep(.el-table__header) {
    .el-checkbox {
      display: none;
    }
  }

### 如何使用 Element Plus 的 `el-table` 组件实现单选功能 为了实现Vue3 中通过 Element Plus 的 `el-table` 组件来完成单选操作,可以调整表格配置以及监听特定事件处理逻辑。对于单选而言,通常会禁用多选框而采用其他方式标记当前被选中的行。 #### 修改列定义以适应单选模式 移除原有的多选列定义,并引入一个新的用于展示选择状态的列: ```html <template> <div id="app"> <el-table ref="singleTable" :data="tableData" highlight-current-row @current-change="handleCurrentChange" style="width: 100%"> <!-- 单选按钮 --> <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 style="margin-top: 20px"> <el-button @click="clearSelection">清除选中</el-button> </div> </div> </template> ``` 这里去掉了 `<el-table-column type="selection"...>` 这样的多选设置,而是利用 `highlight-current-row` 属性让整个行高亮显示作为视觉反馈[^1]。 #### 添加方法处理单击事件 在脚本部分增加相应的方法用来响应用户的交互行为: ```javascript <script setup lang="ts"> import { ref } from 'vue' const tableData = [ { date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles' }, // 更多项... ] // 当前选中的行对象 let currentRow = null; function handleCurrentChange(val) { currentRow = val; } function clearSelection() { if (this.$refs.singleTable !== undefined && this.$refs.singleTable !== null) { this.$refs.singleTable.setCurrentRow(); } } </script> ``` 上述代码片段展示了如何捕获用户点击不同行的动作并通过 `setCurrentRow()` 方法重置选定状态[^3]。 #### 提供界面元素控制选择动作 最后,在页面上添加一些控件以便于测试或者实际应用中让用户能够方便地执行某些基于所选项的操作,比如上面例子中的“清除选中”按钮就是这样一个实例。 这样就完成了基本的单选功能构建过程。需要注意的是,这只是一个简单的演示;真实场景下可能还需要考虑更多细节问题,例如性能优化、用户体验改进等方面的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值