vue-tree-navigation插件路由映射异常:点击菜单无法跳转组件
我来帮你搞定这个路由跳转的问题,看了你的代码,主要有几个关键地方需要调整:
1. 修正路由配置的错误
你的路由代码里有两个明显的问题:
- 子路由的path不应该以斜杠开头:子路由是基于父路由路径的,带斜杠会变成绝对路径,脱离了父路由
/inside的上下文 - 路由的name属性应该是字符串:你现在直接写了组件对象
name: category,这会导致路由匹配失败
修正后的routes.js代码:
const routes = [ { path: "/", component: welcome }, { path: "/inside", component: inside, name: 'inside', // 改为字符串类型的路由名称 children: [ { path: "category", component: category, name: 'category' }, // 去掉路径开头的斜杠,name改为字符串 { path: "sub-category", component: subCategory, name: 'sub-category' }, { path: "item", component: item, name: 'item' } ] } ];
2. 调整vue-tree-navigation的菜单项配置
你现在用的element字段并不是插件用来关联路由的属性,应该用route字段,并且对应我们修正后的路由name(或者完整路径):
修正后的组件代码:
<template> <div class="inside"> <div class="sideBar"><vue-tree-navigation :items="items" /></div> <div class="content"><router-view></router-view></div> </div> </template> <script> export default { data() { return { items: [ { name: 'Item Master', route: 'inside', // 对应父路由的name children: [ { name: 'Create item category', route: 'category' }, // 对应子路由的name { name: 'Create item sub category', route: 'sub-category' }, { name: 'Create item', route: 'item' }, ] }, ], }; } }; </script>
3. 确认插件与Vue Router的集成
还要确保你的项目已经正确安装并启用了Vue Router:
- 要在
main.js里先注册Vue Router,再使用vue-tree-navigation插件 - 如果是Vue 2项目,要确保安装的是
vue-tree-navigation@4.x版本(Vue 3对应v5+版本)
改完这些之后,重启你的项目,点击菜单项应该就能正常跳转到对应的子组件了,地址栏也会显示正确的路径比如http://localhost:8080/inside#/category(hash模式下)。
内容的提问来源于stack exchange,提问作者margherita pizza
相关产品推荐
相关产品推荐

