Vue动态渲染面包屑
思路:在roter的index.js中定义meta路由元数据,然后在computed中监听路由的动态变化,然后在面包屑组件中使用v-for遍历
定义meta数据
{
path: '/',
name: 'manage',
redirect:"/home",
meta:{
name:"主页"
},
component: () => import('../views/Manage'),
children: [
{
path: '/home',
name: '首页',
meta:{
name:""
},
component: () => import('../views/Home')
},
{
path: '/person',
name: '个人信息',
meta:{
name:"个人信息"
},
component: () => import('../views/Person')
},
]
},
{
path: '/system',
name: 'system',
meta:{
name:"系统管理"
},
redirect: "/home",
component: () => import('../views/Manage'),
children: [
{
path: '/system/user',
name: '用户管理',
meta:{
name:"用户管理"
},
component: () => import('../views/User')
},
]
},
{
path: '/login',
name: 'login',
component: () => import('../views/Login')
},
{
path: '/regist',
name: 'regist',
component: () => import('../views/Regist')
},
computed监听
computed:{
//动态面包屑
breadcrumbList(){
return this.$route.matched
}
},
面包屑组件渲染
<!--面包屑-->
<el-breadcrumb separator="/" style="display: inline-block;margin-left: 10px">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item
:to="{ path: item.path }"
v-for="item in breadcrumbList"
:key="item.path"
>{{ item.meta.name }}</el-breadcrumb-item>
</el-breadcrumb>
当控制台跳转当前路由报错
在router目录下index.js中加上
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}