当前位置:首页 > VUE

vue 实现tab切换

2026-03-08 04:11:24VUE

Vue 实现 Tab 切换的方法

使用动态组件 <component :is>

通过 Vue 的动态组件特性,结合 v-forv-if 实现 Tab 切换:

<template>
  <div>
    <div class="tab-buttons">
      <button 
        v-for="(tab, index) in tabs" 
        :key="index"
        @click="currentTab = tab.component"
        :class="{ active: currentTab === tab.component }"
      >
        {{ tab.name }}
      </button>
    </div>
    <component :is="currentTab" />
  </div>
</template>

<script>
import Tab1 from './Tab1.vue';
import Tab2 from './Tab2.vue';

export default {
  components: { Tab1, Tab2 },
  data() {
    return {
      currentTab: 'Tab1',
      tabs: [
        { name: 'Tab 1', component: 'Tab1' },
        { name: 'Tab 2', component: 'Tab2' }
      ]
    };
  }
};
</script>

<style>
.tab-buttons button.active {
  background-color: #4CAF50;
  color: white;
}
</style>

使用 v-show 控制显示

通过 v-show 切换不同 Tab 内容的显示状态:

<template>
  <div>
    <div class="tab-buttons">
      <button 
        v-for="(tab, index) in tabs" 
        :key="index"
        @click="currentTab = index"
        :class="{ active: currentTab === index }"
      >
        {{ tab.name }}
      </button>
    </div>
    <div class="tab-content">
      <div v-show="currentTab === 0">Content for Tab 1</div>
      <div v-show="currentTab === 1">Content for Tab 2</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentTab: 0,
      tabs: [
        { name: 'Tab 1' },
        { name: 'Tab 2' }
      ]
    };
  }
};
</script>

使用 Vue Router 实现

结合 Vue Router 实现带路由的 Tab 切换:

// router.js
import Vue from 'vue';
import Router from 'vue-router';
import Tab1 from './views/Tab1.vue';
import Tab2 from './views/Tab2.vue';

Vue.use(Router);

export default new Router({
  routes: [
    { path: '/tab1', component: Tab1 },
    { path: '/tab2', component: Tab2 }
  ]
});
<!-- App.vue -->
<template>
  <div>
    <router-link to="/tab1" tag="button">Tab 1</router-link>
    <router-link to="/tab2" tag="button">Tab 2</router-link>
    <router-view></router-view>
  </div>
</template>

使用第三方库

可以使用现成的 Vue Tab 组件库,如 vue-tabs-component

vue 实现tab切换

npm install vue-tabs-component
import { Tabs, Tab } from 'vue-tabs-component';

export default {
  components: { Tabs, Tab }
};
<template>
  <tabs>
    <tab name="First tab">
      Content for first tab
    </tab>
    <tab name="Second tab">
      Content for second tab
    </tab>
  </tabs>
</template>

注意事项

  • 动态组件方法适合不同 Tab 内容差异较大的场景
  • v-show 方法适合简单的内容切换,所有 Tab 内容会同时存在于 DOM 中
  • Vue Router 方法适合需要 URL 同步的场景
  • 第三方库可以提供更多高级功能如动画、懒加载等

标签: vuetab
分享给朋友:

相关文章

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="bu…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue实现toast

vue实现toast

Vue 实现 Toast 的方法 使用第三方库(推荐) 对于快速实现 Toast 功能,推荐使用成熟的第三方库如 vue-toastification 或 vant 的 Toast 组件。 安装 v…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…

vue 实现弹窗

vue 实现弹窗

Vue 实现弹窗的方法 在 Vue 中实现弹窗功能可以通过多种方式完成,以下是几种常见的方法: 使用组件和 v-if/v-show 控制显示 创建一个独立的弹窗组件,通过 v-if 或 v-show…

vue底部实现

vue底部实现

Vue 底部实现方法 在 Vue 项目中实现底部布局可以通过多种方式完成,以下是一些常见的方法: 使用固定定位 将底部元素固定在页面底部,适用于单页应用或需要始终显示的底部栏。 <temp…