当前位置:首页 > VUE

vue 实现tab表格

2026-03-09 16:24:12VUE

Vue实现Tab表格

在Vue中实现Tab表格功能,可以通过结合<el-tabs><el-table>组件(Element UI)或自定义实现。以下是两种常见方法:

使用Element UI组件

安装Element UI(若未安装):

npm install element-ui

示例代码:

<template>
  <div>
    <el-tabs v-model="activeTab" @tab-click="handleTabClick">
      <el-tab-pane label="表格1" name="table1">
        <el-table :data="tableData1" border>
          <el-table-column prop="date" label="日期"></el-table-column>
          <el-table-column prop="name" label="姓名"></el-table-column>
        </el-table>
      </el-tab-pane>
      <el-tab-pane label="表格2" name="table2">
        <el-table :data="tableData2" border>
          <el-table-column prop="date" label="日期"></el-table-column>
          <el-table-column prop="address" label="地址"></el-table-column>
        </el-table>
      </el-tab-pane>
    </el-tabs>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'table1',
      tableData1: [{ date: '2023-01-01', name: '张三' }],
      tableData2: [{ date: '2023-01-02', address: '北京' }]
    }
  },
  methods: {
    handleTabClick(tab) {
      console.log('切换至:', tab.name)
    }
  }
}
</script>

自定义Tab切换

若不使用UI库,可通过动态组件或v-if实现:

<template>
  <div>
    <div class="tabs">
      <button 
        v-for="tab in tabs" 
        :key="tab.name"
        @click="activeTab = tab.name"
        :class="{ active: activeTab === tab.name }"
      >
        {{ tab.label }}
      </button>
    </div>

    <div class="table-container">
      <table v-if="activeTab === 'table1'">
        <tr v-for="(item, index) in tableData1" :key="index">
          <td>{{ item.date }}</td>
          <td>{{ item.name }}</td>
        </tr>
      </table>

      <table v-if="activeTab === 'table2'">
        <tr v-for="(item, index) in tableData2" :key="index">
          <td>{{ item.date }}</td>
          <td>{{ item.address }}</td>
        </tr>
      </table>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'table1',
      tabs: [
        { label: '表格1', name: 'table1' },
        { label: '表格2', name: 'table2' }
      ],
      tableData1: [{ date: '2023-01-01', name: '张三' }],
      tableData2: [{ date: '2023-01-02', address: '北京' }]
    }
  }
}
</script>

<style>
.tabs button.active {
  background: #409EFF;
  color: white;
}
table {
  border-collapse: collapse;
  width: 100%;
}
td {
  border: 1px solid #ddd;
  padding: 8px;
}
</style>

动态加载数据

如需切换Tab时动态加载数据,可通过watch监听activeTab

vue 实现tab表格

watch: {
  activeTab(newVal) {
    if (newVal === 'table1' && !this.tableData1.length) {
      this.fetchData1()
    } else if (newVal === 'table2' && !this.tableData2.length) {
      this.fetchData2()
    }
  }
},
methods: {
  async fetchData1() {
    this.tableData1 = await api.getTable1Data()
  },
  async fetchData2() {
    this.tableData2 = await api.getTable2Data()
  }
}

标签: 表格vue
分享给朋友:

相关文章

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复用…

利用vue 实现

利用vue 实现

以下是利用 Vue 实现常见功能的几种方法,分为不同场景和技术要点: 数据绑定与响应式更新 Vue 的核心特性是数据绑定,通过 v-model 实现双向绑定: <template>…