首页 > 其他分享 >基于vue-router的matched实现面包屑功能

基于vue-router的matched实现面包屑功能

时间:2023-07-02 23:12:15浏览次数:38  
标签:vue return item meta 首页 router 面包屑

如上图所示,就是常见的面包屑效果,面包屑的内容一般来说,具有一定的层级关系,就以上图为例,首先是进入首页,然后点击左侧导航,进入活动管理下的活动列表页面,然后点击某一条数据,进入活动详情页面

这正好与vue-routermached属性所获取的结果有着相似的原理,所以可以基于此来实现面包屑效果!

这里使用了elementui的面包屑组件和导航菜单组件,先贴出最后的效果图:

js部分

export default {
    data(){
        return{
        }
    },
    computed:{
        // 侧边导航数据
        routes(){
            // 从$router.options中获取所有路由信息并过滤
            return this.$router.options.routes.filter((item)=>{
                return item.meta.showInbreadcrumb
            });
        },
        // 面包屑数据
        breadcrumb(){
            // 根据路由配置meta中的showInbreadcrumb字段过滤
            let matchedArr = this.$route.matched.filter((item)=>{
                return item.meta.showInbreadcrumb}
            );
            // 因为首页比较特殊,必须一直显示在面包屑第一个,如果没有首页路由信息,手动添加到最前面
            if(matchedArr[0].meta.title !== '首页'){
                matchedArr.unshift(
                    {
                        path:'/home',
                        meta:{  
                            title:"首页",
                            showInbreadcrumb:true
                        }
                    },
                )
            }
            return matchedArr;
        },
    }
}
 

 

 vue部分

<div class="content">
            <!-- 面包屑 -->
            <div class="breadcrumb">
                <el-breadcrumb separator-class="el-icon-arrow-right">
                    <el-breadcrumb-item v-for="(item,index) in breadcrumb" :key="index" :to="{ path: item.path}">{{item.meta.title}}</el-breadcrumb-item>
                </el-breadcrumb>
            </div>
      
        </div>
 

 

标签:vue,return,item,meta,首页,router,面包屑
From: https://www.cnblogs.com/JohnnyLei/p/17521634.html

相关文章

  • vue2-props-type值类型
    在声明自定义属性时,可以通过type来定义属性的值类型。示例代码如下:<template><div><h5>Count组件</h5><p>count的值是:{{count}}</p><button@click="add">+1</button></div></template>&......
  • 使用vue3创建项目
    1.创建项目npmcreatevite@latestedu-vue–---templatevue2.安装antdnpminstallant-design-vue3.安装路由npminstallvue-router4.新建路由在src/router下新建index.js文件import{createRouter,createWebHistory}from'vue-router'importLayoutfrom'.......
  • vue的虚拟DOM
    1、作用提高性能(直接操作DOM性能低,js层操作效率高)跨平台2、虚拟DOM如何生成1、为组件编写模版-template2、模版被编译器编译渲染为函数-render3、挂载中调用render函数,返回对象就是虚拟DOM4、后续patch过程中进一步转化成真实DOM3、VDOM如何diff1、挂载过程结束,记录第一......
  • vue的理解
    vue是一个渐进式框架声明式渲染->组件系统->客户端路由->大规模状态管理->构建工具1、声明式框架命令式与声明式区别命令式关注过程声明式关注结构//命令式letnumber=[1,2,3];lettotal=0;for(leti=0;i<number.length;i++){total+=number[i]......
  • Vue router-view key 导致路由切换非router-view部分也进行刷新
    <router-view> 组件是一个functional组件,渲染路径匹配到的视图组件。<router-view> 渲染的组件还可以内嵌自己的 <router-view>,根据嵌套路径,渲染嵌套组件。 如果中最外层的<router-view>中增加了:key="$route.fullPath",会导致子路由中的router-view之外的部分也会被重新......
  • vue2 input和select无法正常回显
    背景:使用vue进行对象赋值,如果是一个未在data声明的属性,会导致双向绑定无法正常回显。<template><div><div><labelfor="">姓名</label><inputv-model="info.name"type="text"></div><div>......
  • 光脚丫思考Vue3与实战:第03章 Vue实例
    下面是本文的屏幕录像的在线视频:03-Vue实例04-生命周期示意图+钩子函数温馨提示:1、视频下载:线上视频被压缩处理,可以下载高清版本:03-Vue实例:https://pan.baidu.com/s/1O9lUFm2jRIlBeFrBjXPZIA 提取码:nbzt03-生命周期示意图+钩子函数:https://pan.baidu.com/s/1D4ndTSgPBNGE8D4_......
  • 光脚丫思考Vue3与实战:第02章 安装Vue.js
    下面是本文的屏幕录像的在线视频:02-安装Vue.js温馨提示:1、视频下载:线上视频被压缩处理,可以下载高清版本:https://pan.baidu.com/s/16594YUpNNrkjZfrCx7e5kQ 提取码:hws62、示例代码:https://pan.baidu.com/s/1oYV0Lej_E3ufyEUMxq1S2Q 提取码:ikhe 下图是文章大纲: 一、概述Vue.js......
  • 03-Vue.js环境准备-使用vue-cli快速搭建项目(cli3+)
    一、文章大纲二、安装环境本文基于如下的环境进行试验的:Windows10中文64位专业版。v12.18.3版本的Node.js。@vue/cli4.5.4的Vue.js和cli。三、安装vue-cli使用npm全局安装vue-cli:npminstall-g@vue/cli可以使用如下的创建项目的命令,查看vuecli的安装情况:按照上面的提示,先卸载......
  • 前端Vue自定义注册界面模版 手机号邮箱账号输入框 验证码输入框  包含手机号邮箱账号
    前端Vue自定义注册界面模版手机号邮箱账号输入框验证码输入框 包含手机号邮箱账号验证,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13306效果图如下:......