当前位置:首页 > VUE

vue 路由实现 tab切换

2026-02-22 12:55:44VUE

Vue 路由实现 Tab 切换

在 Vue 中,可以通过路由(Vue Router)实现 Tab 切换功能。以下是具体实现方法:

配置路由

router/index.js 中定义路由,每个 Tab 对应一个路由路径。

import Vue from 'vue'
import VueRouter from 'vue-router'
import Tab1 from '../views/Tab1.vue'
import Tab2 from '../views/Tab2.vue'
import Tab3 from '../views/Tab3.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/tab1',
    name: 'Tab1',
    component: Tab1
  },
  {
    path: '/tab2',
    name: 'Tab2',
    component: Tab2
  },
  {
    path: '/tab3',
    name: 'Tab3',
    component: Tab3
  },
  {
    path: '/',
    redirect: '/tab1' // 默认重定向到第一个 Tab
  }
]

const router = new VueRouter({
  routes
})

export default router

创建 Tab 组件

为每个 Tab 创建对应的组件文件(如 Tab1.vueTab2.vue 等)。

<template>
  <div>
    <h2>Tab 1 Content</h2>
  </div>
</template>

<script>
export default {
  name: 'Tab1'
}
</script>

实现 Tab 切换界面

在父组件中使用 <router-link> 实现 Tab 导航,用 <router-view> 显示内容。

<template>
  <div>
    <div class="tabs">
      <router-link to="/tab1" class="tab">Tab 1</router-link>
      <router-link to="/tab2" class="tab">Tab 2</router-link>
      <router-link to="/tab3" class="tab">Tab 3</router-link>
    </div>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'TabsContainer'
}
</script>

<style>
.tabs {
  display: flex;
  border-bottom: 1px solid #ccc;
}
.tab {
  padding: 10px 20px;
  text-decoration: none;
  color: #333;
}
.router-link-exact-active {
  color: #42b983;
  border-bottom: 2px solid #42b983;
}
</style>

动态高亮当前 Tab

通过 Vue Router 的 router-link-exact-active 类自动实现当前 Tab 高亮,无需额外逻辑。

嵌套路由实现复杂 Tab

对于更复杂的 Tab 结构,可以使用嵌套路由:

const routes = [
  {
    path: '/dashboard',
    component: Dashboard,
    children: [
      {
        path: 'stats',
        component: Stats
      },
      {
        path: 'settings',
        component: Settings
      }
    ]
  }
]

编程式导航

除了 <router-link>,也可以通过代码实现 Tab 切换:

methods: {
  switchTab(tabName) {
    this.$router.push(`/${tabName}`)
  }
}

保持 Tab 状态

默认情况下切换 Tab 会重新渲染组件,如需保持状态:

vue 路由实现 tab切换

<router-view v-slot="{ Component }">
  <keep-alive>
    <component :is="Component" />
  </keep-alive>
</router-view>

这种方法利用了 Vue Router 和 Vue 的内置功能,实现了完整的 Tab 切换功能,包括路由管理、状态保持和样式控制。

标签: 路由vue
分享给朋友:

相关文章

vue实现适老化样式

vue实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { --…

vue的艾特功能实现

vue的艾特功能实现

Vue 的 @ 功能实现 在 Vue 中实现类似社交平台的 @ 功能,通常涉及输入框的监听、用户匹配和选择插入。以下是具体实现方法: 监听输入框内容 使用 v-model 绑定输入框内容,并通过 @…

vue实现oauth

vue实现oauth

Vue 实现 OAuth 的步骤 安装必要的依赖 确保项目中安装了 axios 和 vue-router。OAuth 通常需要发送 HTTP 请求和处理路由跳转。 npm install axios…

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue实现分栏

vue实现分栏

Vue实现分栏的常见方法 使用CSS Flexbox布局 通过Flexbox可以快速实现分栏效果,适合大多数响应式布局场景 <template> <div class="con…

vue nexttick实现

vue nexttick实现

Vue 中 nextTick 的实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它的核心实现依赖于 JavaScript 的事件循环机制。 基本…