首页 > 其他分享 >面包屑

面包屑

时间:2023-12-07 11:33:44浏览次数:18  
标签:const name breadcrumbTitle meta import router 面包屑

通过 meta 设定父级页面信息

  • 面包屑数据,用 pina 或 vuex 管理更好
import { Ref, ref } from "vue";
interface Breadcrumb {
  title: string;
  pageName: string;
}
// 面包屑数据
export const breadcrumbData: Ref<Breadcrumb[]> = ref([]);
  • 路由信息,在 router.beforeEach 中设置面包屑数据
import Vue from "vue";
import VueRouter, { Route, RouteConfig } from "vue-router";
import HomeView from "../views/HomeView.vue";
import { breadcrumbData } from "@/common/breadcrumb";

Vue.use(VueRouter);

const routes: Array<RouteConfig> = [
  {
    path: "/",
    name: "home",
    component: HomeView,
    meta: {
      breadcrumbTitle: "主页",
    },
  },
  {
    path: "/about",
    name: "about",
    meta: {
      fatherPageName: "home",
      breadcrumbTitle: "关于",
    },
    component: () =>
      import(/* webpackChunkName: "about" */ "../views/AboutView.vue"),
  },
];

const router = new VueRouter({
  mode: "history",
  base: process.env.BASE_URL,
  routes,
});

function setBreadcrumbData(route: Route) {
  const { name, meta } = route;
  if (!name) throw new Error("routes中页面必须包含 name 参数");

  if (meta) {
    const { fatherPageName, breadcrumbTitle } = meta;
    breadcrumbData.value.unshift({
      pageName: name,
      title: breadcrumbTitle,
    });
    if (fatherPageName) {
      const { route: fatherRoute } = router.resolve({ name: fatherPageName });
      setBreadcrumbData(fatherRoute);
    }
  } else {
    throw new Error("routes中页面必须包含 meta.breadcrumbTitle 参数");
  }
}

router.beforeEach((to, from, next) => {
  breadcrumbData.value = [];
  setBreadcrumbData(to);
  next();
});

export default router;

标签:const,name,breadcrumbTitle,meta,import,router,面包屑
From: https://www.cnblogs.com/qq3279338858/p/17881322.html

相关文章

  • 若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页
    若依vue前端动态设置路由path不同参数在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起:https://blog.csdn.net/weixin_43991241/article/details/126319259?ops_request_misc=&request_id=&biz_id=102&utm_term=matched.redir......
  • 基于vue-router的matched实现面包屑功能
    如上图所示,就是常见的面包屑效果,面包屑的内容一般来说,具有一定的层级关系,就以上图为例,首先是进入首页,然后点击左侧导航,进入活动管理下的活动列表页面,然后点击某一条数据,进入活动详情页面这正好与vue-router的mached属性所获取的结果有着相似的原理,所以可以基于此来实现面包屑效......
  • react+antd面包屑导航
    根据以前写vue面包屑写的。import{useLocation,matchRoutes,}from"react-router-dom";constlocation=useLocation();importrouterfrom'./router'useEffect(()=>{//router全部路由constmatched=matchRoutes(rout......
  • 面包屑导航的实现
    面包屑导航的实现记录下做面包屑导航的思路1.更改路由,给路由配置meta属性添加对象{path:'/store',meta:{title:'店铺管理'},component:()=>import('@/views/home/Layerout.vue’)}2.封装函数,获取路径和名字准备一个变量用来装路径和导航名字navArr:[]//......
  • EasyCVR视频融合平台设备管理增加面包屑导航设计
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、检索回看、智能告警、平台级联、服务器集群、云台控制与语音对讲、......
  • vue3面包屑导航栏
    import{useRoute,useRouter}from"vue-router";import{computed,ref,watch,watchEffect,nextTick}from"vue";constrouter=useRouter()constroute=useRoute()constbreadcrumb=ref([])/***@Date:2023-03-2817:55:20*@descript......
  • 若依框架-侧边栏、导航栏、面包屑样式修改
    修改【若依框架】的侧边栏、导航栏、面包屑样式、修改全局页面样式说明:只运行前端项目,只需要要下载官方项目http://www.ruoyi.vip/ 修改vue.config.js文件中的target: `......
  • 修改element-ui 面包屑的样式
      开发者模式,一层层的找啊  .el-breadcrumb__item{.el-breadcrumb__inner{&.is-link{}}}......
  • 开心档之Bootstrap4 面包屑导航(Breadcrumb)
    Bootstrap4面包屑导航(Breadcrumb)面包屑导航是一种基于网站层次信息的显示方式。以博客为例,面包屑导航可以显示发布日期、类别或标签。它们表示当前页面在导航层次结构内......
  • 二级多级子路由时,react面包屑获取及处理
     因react-router中路由配置时,子路由为父级路由+子路由拼接而成,故当实现面包屑时需要根据当前路由获取完整的父子路由链入参:如/layout/list/showList出参:如['/l......