You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

vue-tree-navigation插件路由映射异常:点击菜单无法跳转组件

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:17:02