当前位置:首页 > VUE

vue 实现表格单选

2026-01-14 03:48:13VUE

实现表格单选的基本思路

在Vue中实现表格单选功能,通常需要结合表格组件(如el-table)和数据绑定。核心逻辑是通过点击事件更新当前选中行的唯一标识(如id),并通过:class:style绑定高亮样式。

基于Element UI的实现示例

假设使用Element UI的el-table组件,以下是一个完整的实现示例:

vue 实现表格单选

<template>
  <el-table
    :data="tableData"
    @row-click="handleRowClick"
    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>
</template>

<script>
export default {
  data() {
    return {
      tableData: [{
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄',
        id: 1
      }, {
        date: '2016-05-04',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1517 弄',
        id: 2
      }],
      selectedRowId: null
    }
  },
  methods: {
    handleRowClick(row) {
      this.selectedRowId = row.id;
    }
  }
}
</script>

添加高亮样式

通过row-class-name属性实现选中行的高亮效果:

vue 实现表格单选

<el-table
  :data="tableData"
  @row-click="handleRowClick"
  :row-class-name="tableRowClassName"
  style="width: 100%">
  <!-- 列定义 -->
</el-table>
methods: {
  tableRowClassName({ row }) {
    return row.id === this.selectedRowId ? 'selected-row' : '';
  }
}
.el-table .selected-row {
  background-color: #f0f9eb;
}

使用计算属性优化

若需频繁访问选中行数据,可通过计算属性实现:

computed: {
  selectedRow() {
    return this.tableData.find(item => item.id === this.selectedRowId);
  }
}

纯Vue的实现方式(不依赖UI库)

对于原生HTML表格,可通过以下方式实现:

<table>
  <tr
    v-for="item in tableData"
    :key="item.id"
    @click="selectedRowId = item.id"
    :class="{ active: selectedRowId === item.id }">
    <td>{{ item.date }}</td>
    <td>{{ item.name }}</td>
    <td>{{ item.address }}</td>
  </tr>
</table>
.active {
  background-color: #42b983;
  color: white;
}

关键注意事项

  • 确保每行数据具有唯一标识符(如id
  • 高亮样式建议使用CSS伪类:hover增强用户体验
  • 对于大型表格,考虑使用v-once优化未选中行的渲染性能
  • 单选状态应存储在Vx(如Vuex)中(跨组件场景)

标签: 单选表格
分享给朋友:

相关文章

vue实现表格复选

vue实现表格复选

Vue实现表格复选的方法 基础实现 在Vue中实现表格复选功能可以通过v-model绑定复选框的状态,结合v-for循环渲染表格数据。以下是一个基础示例: <template> &l…

css 制作表格

css 制作表格

基础表格结构 使用HTML的<table>标签创建表格框架,搭配<tr>(行)、<th>(表头)和<td>(单元格)标签。例如: <table…

vue实现导出表格

vue实现导出表格

Vue 中实现表格导出 使用 xlsx 库导出 Excel 安装 xlsx 库: npm install xlsx --save 在 Vue 组件中引入并使用: import XLSX fro…

表格tb制作css

表格tb制作css

使用CSS美化HTML表格 通过CSS可以自定义表格样式,使其更美观和符合设计需求。以下是一些常用方法: 基础表格样式 table { width: 100%; border-collap…

vue表格实现教学

vue表格实现教学

基础表格实现 使用 Vue 的 v-for 指令渲染数组数据到表格中。 <template> <table> <thead> <…

vue实现表格读取数据

vue实现表格读取数据

Vue 实现表格数据读取 在 Vue 中实现表格数据读取通常涉及以下关键步骤: 数据绑定与表格渲染 通过 v-for 指令动态渲染表格行,数据通常存储在组件的 data 或 Vuex 状态中:…