当前位置:首页 > VUE

vue 实现tab表格

2026-03-09 16:24:12VUE

Vue实现Tab表格

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

使用Element UI组件

安装Element UI(若未安装):

vue 实现tab表格

npm install element-ui

示例代码:

vue 实现tab表格

<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

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退出功能的步骤 在Vue中调用接口实现退出功能通常需要与后端API交互,以下是实现方法: 前端实现 创建退出方法,调用后端API接口: methods: { logout() {…

vue评分实现

vue评分实现

Vue 评分组件实现方法 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 引入并注册组件: import Vue from '…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template&…

vue scrolltop 实现

vue scrolltop 实现

实现 Vue 中的 scrollTop 在 Vue 中实现滚动到顶部功能可以通过多种方式完成,包括使用原生 JavaScript、Vue 指令或第三方库。以下是几种常见的实现方法: 使用原生 Jav…

vue实现tabbar

vue实现tabbar

Vue 实现 TabBar 的方法 使用 Vue Router 实现基础 TabBar 安装 Vue Router 依赖: npm install vue-router 创建路由配置文件(route…

vue 水印 实现

vue 水印 实现

Vue 水印实现方法 使用 canvas 动态生成水印 在 Vue 组件中通过 canvas 绘制水印,并将其作为背景图片插入到目标元素中。这种方法灵活性高,支持动态调整水印内容、角度和透明度。 &…