当前位置:首页 > 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实现表格拖动列宽

实现表格列宽拖动的核心思路 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖动逻辑。在表头列分隔线处添加可拖拽区域,拖动时动态修改列的宽度。 基础HTML结构示例…

使用vue实现表格

使用vue实现表格

使用 Vue 实现表格 在 Vue 中实现表格可以通过多种方式完成,以下是一个基于 Vue 3 的示例,展示如何动态渲染表格数据并支持基础功能(如排序、筛选)。 基础表格实现 通过 v-for 循环…

vue实现单选

vue实现单选

Vue 实现单选按钮 在 Vue 中实现单选按钮通常使用 v-model 绑定数据,结合 <input type="radio"> 或第三方组件库(如 Element UI、Ant Des…

vue单选按钮实现

vue单选按钮实现

Vue 单选按钮实现方法 在 Vue 中实现单选按钮可以通过 v-model 指令绑定数据,结合 <input type="radio"> 或第三方组件库完成。以下是几种常见实现方式:…

vue实现重置表格数据

vue实现重置表格数据

重置表格数据的方法 在Vue中重置表格数据通常涉及清空或重新初始化数据绑定的数组或对象。以下是几种常见实现方式: 直接重置数据源 对于基于数组的表格数据,可以直接将数据数组重置为空或初始值:…

vue实现表格多行修改

vue实现表格多行修改

实现表格多行修改的方法 数据绑定与表格渲染 使用v-model绑定表格数据到Vue实例的data属性。通过v-for循环渲染表格行,并为每行数据添加编辑状态标识。 <template>…