当前位置:首页 > 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和CSS创建表格 HTML提供<table>标签用于创建表格结构,CSS用于控制样式。以下是一个基础示例: <table class="styled-table">…

css表格表单制作

css表格表单制作

CSS表格制作 使用CSS创建表格主要涉及<table>标签及其子元素的样式控制。以下是一个基础示例: <table class="styled-table"> <…

css制作三行三列表格

css制作三行三列表格

使用HTML和CSS创建三行三列表格 通过HTML的<table>标签结合CSS样式可以轻松实现三行三列的表格结构。 <table class="three-by-three"&g…

制作css表格

制作css表格

基础CSS表格结构 使用HTML的<table>标签创建表格骨架,搭配CSS控制样式。以下是一个基础示例: <table class="styled-table"> &l…

vue实现表格

vue实现表格

Vue实现表格的方法 在Vue中实现表格可以通过多种方式完成,包括使用原生HTML表格、第三方组件库或自定义组件。以下是几种常见的方法: 使用原生HTML表格 在Vue模板中直接使用HTML的…