-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Description
描述 Bug
路由配置相对路径时首次进入页面无法激活相应菜单项
重现步骤
- 路由配置(简化)
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
}
]
}
]
}
]- 启动, 进入首页
预期
访问 /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
Labels
No labels