Skip to content

路由配置相对路径时首次进入页面无法激活相应菜单项 #662

@EmiyaYang

Description

@EmiyaYang

描述 Bug

路由配置相对路径时首次进入页面无法激活相应菜单项

重现步骤

  1. 路由配置(简化)
export const asyncRouterMap = [
  {
    path: '/',
    name: 'index',
    component: BasicLayout,
    children: [
      {
        path: '/overview',
        name: 'overview',
        components: RouteView,
        children: [
          {
           // 绝对路径
            path: '/overview/a',
            name: 'A',
            component: compA
          },
          {
           // 相对路径
            path: 'b',
            name: 'B',
            component: compB
          }
        ]
      }
    ]
  }
]
  1. 启动, 进入首页

预期

访问 /overview/a/overview/b 均能匹配相应菜单项

实际结果

访问 /overview/a 符合预期, 访问 /overview/b 不符合预期.

Desktop (please complete the following information):

  • OS: mac
  • Browser chrome

原因
menu.js 使用this.$route.matched进行路由选择并跳转, 相对路径被转成了绝对路径. 而props.menu则直接传入路由项, 相对路径没有得到转换. 前后两者匹配不上.

建议
当路由层级很深的时, 每个路径都写作绝对路径不好维护. 使用相对路径是一个比较合理的需求, 我认为应当对此做出兼容.
可能的做法是在传入props.menu前对配置项进行预处理, BFS遍历将相对路径转成绝对路径.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions