vue-router想要面包屑效果,直接使用children属性是不行的,原因是面包屑的祖先后代关系并不一定是vue-router的祖先后代路由关系,可能在路由层面是平级关系,所以不能直接通过children属性来定义面包屑关系

对于每一个路由的面包屑数组放到meta中我觉得比较合适,这样在生成面包屑组件的时候,直接使用当前路由中的面包屑数组来生成就可以了

我的实现方案是对于定义的routes重新定义一下结构规范,引入一个新的属性 breadcrumbsChildren来表示这个属性里面的数组是父路由的面包屑后代,然后使用一个转化函数将routes转化为标准的routes数据

数据结构

let routes = [{

path: '0',

breadcrumbsChildren: [{

path: '0-b',

children: [{

path: '0-b-0',

}]

}],

children: [{

path: '0-0',

},

{

path: '0-1',

},

{

path: '0-2',

breadcrumbsChildren: [{

path: '0-2-b-0'

}]

}

]

},

{

path: '1'

},

{

path: '2',

children: [{

path: '2-0'

},

{

path: '2-1'

}

],

breadcrumbsChildren: [{

path: '2-b-0'

}, {

path: '2-b-1'

}, {

path: '2-b-2',

breadcrumbsChildren: [{

path: '2-b-2-b-0'

}, {

path: '2-b-2-b-1'

}],

children: [{

path: '2-b-2-0'

}, {

path: '2-b-2-1'

}]

}]

},

];

转化函数

function transformRoutes(routes){

for(let i = 0;i

_breadcrumbs(routes[i],[]);

}

for(let i = 0;i

_flat(i,routes);

}

function _breadcrumbs(route,breadcrumbs){

route.meta = route.meta||{};

route.meta.breadcrumbs=[...breadcrumbs,route];

(route.breadcrumbsChildren||[]).forEach(breadcrumbsChild => {

_breadcrumbs(breadcrumbsChild,route.meta.breadcrumbs)

});

(route.children||[]).forEach(child => {

_breadcrumbs(child,route.meta.breadcrumbs)

});

}

function _flat(i,routes){

const route = routes[i];

if(route.breadcrumbsChildren){

routes.splice(i+1,0,...route.breadcrumbsChildren);

delete route.breadcrumbsChildren;

}

for(let i = 0;i

_flat(i,route.children);

}

}

}

真实使用

let routes = [{path:'/',components:()=>import('./index.vue')}...];

transformRoutes(routes);

const router = new VueRouter({

routes

});

new Vue({

router,

...

})

breadcrumb 根据路由_简单的vue-router面包屑转化相关推荐

  1. vue实战-面包屑的处理

    vue实战-面包屑的处理 1.面包屑处理分类操作 在Search路由模块下 通过v-if来确定面包屑的存在,设置点击事件处理删除面包屑后的情况 <ul class="fl sui-ta ...

  2. vue实现波纹效果_简单的Vue.js插件可实现自定义波纹效果

    vue实现波纹效果 Vue-Rippler (vue-rippler) Simple Vue.js plugin for custom ripple effect. 简单的Vue.js插件可实现自定义 ...

  3. vue动态面包屑导航

    说明:根据不同的页面动态生成不同的面包屑导航 (不用在每个页面写死面包屑) router.js路由文件: {path:'/index',name:'index',component:()=>im ...

  4. Vue 封装面包屑 (即粘即用)

    效果展示(后台管理系统中常用) 如果你也需要如图所示的效果 直接把下面的代码粘贴过去即可 不需要父组件传递任何参数 十分好用: 基本思路: 监听 $route 路由信息: 把当前的信息添加至数组,循环 ...

  5. vue动态面包屑导航的使用

    动态面包屑导航是根据路由中的 matched 获取到的 单独提取出面包屑导航栏组件 <template><el-breadcrumb class="app-breadcru ...

  6. vue 中面包屑带跳转的做法

    首先要在子页面的meta中定义 {path: '/staffsManagement',component: () => import(/* webpackChunkName: "das ...

  7. Vue动态面包屑功能的实现方法

    面包屑应该是我们在项目中经常使用的一个功能,一般情况下它用来表示我们当前所处的站点位置,也可以帮助我们能够更快的回到上个层级. 今天我们就来聊聊如何在 Vue 的项目中实现面包屑功能.以下案例都是使用 ...

  8. 404 单页应用 报错 路由_详解vue 单页应用(spa)前端路由实现原理

    写在前面:通常 SPA 中前端路由有2种实现方式: window.history location.hash 下面就来介绍下这两种方式具体怎么实现的 一.history 1.history基本介绍 w ...

  9. vue 网格组件_简单的Vue组件可显示带有事件的月网格日历

    vue 网格组件 简洁日历 (vue-simple-calendar) vue-simple-calendar is a flexible, themeable, lightweight event ...

  10. react 动态修改路由_升级到 React Router 4 并实现动态加载和模块热替换

    这篇文章是升级到Webpack2坑--模块热替换失效页面不自动刷新?的后续.那篇文章主要说明了,升级到 Webpack 2 之后,通过升级webpack-dev-server和react-hot-lo ...

最新文章

  1. 40万总奖金!院士指导,顶级云服务免费用!2021全球高性能云计算创新大赛来了...
  2. java中tomcat检测_eclipse+tomcat测试JSP
  3. 解决小米手机无法收到开机广播的问题
  4. 阿里云 ECS centos java timer进程异常/混乱......的解决方法
  5. python爬虫知识大全_(硬知识)Python爬虫知识点梳理,认真看好好学
  6. 基于 RocketMQ 构建阿里云事件驱动引擎EventBridge
  7. 文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...
  8. 最大子序列和的四种求解算法及其时间比较
  9. python模拟登录webspare_全面解读python web 程序的9种部署方式
  10. 嘉年华回顾丨 周正中(德哥)谈谈PG怎么这么火
  11. BZOJ1010 [HNOI2008]玩具装箱
  12. Visual Assist X 10.8.2001 破解版 支持VC2013及以下版本
  13. 百度地图,坐标反查,拾取坐标位置
  14. 简单介绍一下树莓派zero w
  15. 两人互殴打架派出所如何处理
  16. Oracle数据库(完整版)
  17. 算术练习题(java)
  18. Logo设计没灵感?这7个宝藏网站拯救你的头发
  19. 搭建Spring Boot2.X集成Hibernate5项目,并集成传统SSH老项目的安全认证组件,以Spring Boot方式开发项目并集成到老系统
  20. IE11中图片无法显示(完美解决)

热门文章

  1. vue中使用kindeditor编辑器_Vue中使用wangEditor富文本编辑器(示例代码)
  2. 蓝桥杯2019年第十届C/C++省赛B组第一题-组队
  3. Android IPC(二)Messenger实现跨进程双向通信
  4. 冒泡、选择、插入、希尔、归并、快速排序、排序的稳定性、测试算法时间消耗
  5. React的单向数据流与组件间的沟通
  6. DevExpress GridControl使用方法
  7. 韩顺平老师的学习方法
  8. 7-7自动色阶/自动对比度/自动颜色
  9. 大话设计模式--解释器模式
  10. JQuery之拖拽插件