Skip to content

witNav 导航组件

witNav是一个应用导航组件,提供了顶部导航栏功能,支持不同布局模式,包含左侧面板(Logo和标签页)和右侧工具栏,实现了路由标签页切换和导航功能。

用法实例

vue
<template>
  <div>
    <!-- 基本用法 -->
    <witNav layout="comprehensive" />
    
    <!-- 自定义布局 -->
    <witNav layout="other-layout" />
  </div>
</template>

<script lang="ts" setup>
// 组件会自动从路由配置和store中获取导航数据
</script>

API

属性名类型默认值描述
layout[String]''布局类型,影响导航栏显示样式,如'comprehensive'

插槽

插槽名描述
组件不提供插槽

事件

事件名描述参数
组件不直接触发事件-

TIP

组件支持不同布局模式:

  • 综合布局(comprehensive):显示标签页导航
  • 其他布局:显示简化的导航栏

标签页点击时会处理路由跳转,支持外部链接和内部路由:

  • 外部链接:在新窗口打开
  • 内部路由:根据配置跳转到指定页面或重定向到第一个子菜单

组件依赖路由配置和routesStore来获取导航数据,确保这些数据正确加载。

功能说明

  1. 多布局支持:根据传入的layout属性显示不同的导航样式
  2. 标签页导航:在综合布局下显示路由标签页,支持点击切换
  3. 路由处理:处理内部路由跳转和外部链接打开
  4. 响应式设计:在小屏幕设备上自动隐藏部分工具栏
  5. 国际化支持:使用translate函数支持导航项的多语言显示

核心代码解析

javascript
// 标签页点击处理
const handleTabClick = () => {
  nextTick(() => {
    if (isExternal(tabMenu.value.path)) {
      // 外部链接在新窗口打开
      window.open(tabMenu.value.path)
      router.push('/redirect')
    } else if (openFirstMenu) {
      // 内部路由跳转,支持重定向到第一个子菜单
      router.push(tabMenu.value.redirect || tabMenu.value)
    }
  })
}

依赖说明

依赖项用途
wit-logo提供应用Logo显示
wit-right-tools提供右侧工具栏功能
useRoutesStore获取路由和标签页数据
useRouterVue Router实例,处理路由跳转
storeToRefs从Pinia store中解构响应式数据
isExternal验证链接是否为外部链接
translate国际化翻译函数
openFirstMenu配置项,控制是否默认打开第一个子菜单

湘ICP备2024070110号