vue 实现表格单选
实现表格单选的方法
在 Vue 中实现表格单选功能可以通过多种方式完成,以下是几种常见的实现方法:
使用 v-model 绑定选中项
通过 v-model 绑定一个变量来存储当前选中的行数据,结合 @click 事件实现单选逻辑。

<template>
<table>
<tr
v-for="item in tableData"
:key="item.id"
@click="selectedRow = item"
:class="{ 'selected': selectedRow === item }"
>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
</tr>
</table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 }
],
selectedRow: null
}
}
}
</script>
<style>
.selected {
background-color: #f0f0f0;
}
</style>
使用 el-table 组件(Element UI)
如果使用 Element UI 的 el-table 组件,可以直接利用其内置的单选功能。

<template>
<el-table
:data="tableData"
highlight-current-row
@current-change="handleCurrentChange"
>
<el-table-column prop="name" label="Name"></el-table-column>
<el-table-column prop="age" label="Age"></el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 }
],
currentRow: null
}
},
methods: {
handleCurrentChange(val) {
this.currentRow = val;
}
}
}
</script>
使用自定义单选按钮
通过添加单选按钮列,实现更直观的单选交互。
<template>
<table>
<tr v-for="item in tableData" :key="item.id">
<td>
<input
type="radio"
:name="'tableRadio'"
:value="item.id"
v-model="selectedId"
>
</td>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
</tr>
</table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 }
],
selectedId: null
}
}
}
</script>
使用计算属性获取选中行
通过计算属性动态获取当前选中的行数据,方便后续操作。
<template>
<table>
<tr
v-for="item in tableData"
:key="item.id"
@click="selectedId = item.id"
:class="{ 'selected': selectedId === item.id }"
>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
</tr>
</table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 }
],
selectedId: null
}
},
computed: {
selectedRow() {
return this.tableData.find(item => item.id === this.selectedId);
}
}
}
</script>
注意事项
- 如果表格数据是动态加载的,需要在数据更新后重置选中状态。
- 高亮样式可以通过 CSS 自定义,确保用户体验一致。
- 对于大型表格,考虑性能优化,避免不必要的渲染。






