element-plus导航不跳转的解决办法

在使用Element-Plus的Menu组件时,需要注意各个属性的含义,例如default-active,router等。文章通过示例代码展示了如何创建一个带有子菜单的垂直导航菜单,并强调了在修改el-menu-item的index后,若要实现点击跳转,需在el-menu上设置router属性为true,并确保已配置好路由。同时,文章还提到了事件处理函数handleOpen和handleClose的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

element-plus每个组件在使用的时候需要好好看一下各个属性的含义,然后再进行使用

比如我们需要用到Menu下的这个组件

<template>
  <el-row class="tac">
    <el-col :span="12">
      <h5 class="mb-2">Default colors</h5>
      <el-menu
        default-active="2"
        class="el-menu-vertical-demo"
        @open="handleOpen"
        @close="handleClose"
      >
        <el-sub-menu index="1">
          <template #title>
            <el-icon><location /></el-icon>
            <span>Navigator One</span>
          </template>
          <el-menu-item-group title="Group One">
            <el-menu-item index="1-1">item one</el-menu-item>
            <el-menu-item index="1-2">item two</el-menu-item>
          </el-menu-item-group>
          <el-menu-item-group title="Group Two">
            <el-menu-item index="1-3">item three</el-menu-item>
          </el-menu-item-group>
          <el-sub-menu index="1-4">
            <template #title>item four</template>
            <el-menu-item index="1-4-1">item one</el-menu-item>
          </el-sub-menu>
        </el-sub-menu>
        <el-menu-item index="2">
          <el-icon><icon-menu /></el-icon>
          <span>Navigator Two</span>
        </el-menu-item>
        <el-menu-item index="3" disabled>
          <el-icon><document /></el-icon>
          <span>Navigator Three</span>
        </el-menu-item>
        <el-menu-item index="4">
          <el-icon><setting /></el-icon>
          <span>Navigator Four</span>
        </el-menu-item>
      </el-menu>
    </el-col>
</template>

<script lang="ts" setup>
import {
  Document,
  Menu as IconMenu,
  Location,
  Setting,
} from '@element-plus/icons-vue'
const handleOpen = (key: string, keyPath: string[]) => {
  console.log(key, keyPath)
}
const handleClose = (key: string, keyPath: string[]) => {
  console.log(key, keyPath)
}
</script>

在修改对应的el-itemindex之后发现点击并没有什么变化,这是因为没有将属性router设置为true
<el-menu标签中加入router="true"即可实现跳转(当然你得先配置好路由)

### Element Plus 导航栏使用教程 Element Plus 提供了一套完整的导航组件,包括 `Menu` 组件用于实现侧边栏菜单、顶部导航条等。下面是一个基于 Vue 3 和 Element Plus 的简单导航栏示例。 #### 安装依赖 为了能够正常使用 Element Plus 中的 Menu 组件以及其他相关功能模块,在项目初始化阶段需要安装必要的包: ```bash npm install element-plus vue-router@4 pinia axios ``` #### 创建基础布局结构 定义一个基本的应用程序框架来承载页面内容以及左侧的菜单区域[^1]。 ```html <template> <el-container style="height: 100%;"> <!-- 左侧菜单 --> <el-aside width="200px"> <NavMenu /> </el-aside> <!-- 主体部分 --> <el-main>Main Content</el-main> </el-container> </template> ``` #### 实现动态路由匹配与菜单项关联 通过配置 Vue Router 来设置应用内的同路径,并将其映射到对应的视图组件上;同时利用 Pinia 或 Vuex 进行状态管理以便于维护当前激活的菜单选项。 ```javascript // src/router/index.js import { createRouter, createWebHistory } from 'vue-router' const routes = [ { path: '/', name: 'Home', component: () => import('@/views/Home.vue') }, // 更多路由... ] const router = createRouter({ history: createWebHistory(), routes, }) export default router; ``` #### 构建自定义菜单组件 编写 NavMenu.vue 文件以渲染出带有链接跳转能力的列表项,支持嵌套路由显示菜单[^2]。 ```html <!-- src/components/NavMenu.vue --> <template> <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @select="handleSelect"> <MenuItem v-for="(item,index) in menuData" :key="index" :menu-item="item"/> </el-menu> </template> <script setup lang="ts"> import MenuItem from './MenuItem.vue'; import { useRoute } from "vue-router"; defineProps<{ menuData?: Array<any>; }>(); function handleSelect(index:string){ console.log(`selected ${index}`); } </script> ``` 对于更复杂的场景可以考虑采用递归的方式处理多层嵌套的数据源,从而让开发者更容易地扩展应用程序的功能特性。 #### 配置 API 请求拦截器 (可选) 如果涉及到权限验证等功能,则可以在 Axios 上添加请求前后的钩函数来进行统一的身份校验逻辑控制[^3]。 ```typescript // src/utils/request.ts import axios from 'axios'; axios.interceptors.request.use( config => { const token = localStorage.getItem('token'); if(token && !config.headers['Authorization']){ config.headers['Authorization'] = `Bearer ${token}`; } return config; }, error => Promise.reject(error)); export default axios; ``` 以上就是有关如何在 Vue 3 应用中集成 Element Plus 并创建响应式的导航栏的基本介绍。实际开发过程中可根据具体需求调整样式和交互效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值