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)
}
posted @ 2022-07-15 11:46  长情c  阅读(545)  评论(0)    收藏  举报