尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

react+antdesign达成后台管理系统面包屑

react+antdesign达成后台管理系统面包屑
📅 发布时间:2026/6/18 16:04:50

在这里插入图片描述
andDesign面包屑组件,实现这个功能主要是当我点击对应目录下的子菜单使用递归获取当前叶子节点的最高父节点拿到整个对象塞到集合中去

创建 Breadcrumb组件

import { Breadcrumb
} from 'antd';
import { routes
} from '@/router/routes';
import { useLocation
} from'react-router-dom';
import { getBreadcrumbList
} from '@/utils';
const BreadcrumbNav = () =>
{
const location = useLocation();
const items = getBreadcrumbList(routes, location.pathname);
const breadcrumbItems = items.map(item =>
{
const childrenMenu = item.children?.map(child =>
({
key: child.path,
label: <a href={
`#${child.path
}`
}>
{child.meta.title
}<
/a>
})) || [];
return {
title: (
<span>{item?.meta?.title}</span>),menu: childrenMenu.length >0 ? { items: childrenMenu} : undefined};});return (<Breadcrumbitems={[{title: <a href="#/">首页</a>},...breadcrumbItems]}/>)};export default BreadcrumbNav;

utils文件

export const searchRoute = (path: string, routes: RouteObject[] = []): RouteObject =>
{
let result: RouteObject = {
};
for (const item of routes) {
if (item.path === path) return item;
if (item.children) {
const res = searchRoute(path, item.children);
if (Object.keys(res).length) result = res;
}
}
return result;
};
export const getBreadcrumbList = (routes: RouteObject[] = [], currentPath: string) =>
{
if(!currentPath || currentPath === '/') return [];
const currentParent = findBreadcrumb(routes, currentPath)
const current = searchRoute(currentPath, routes)
return [
currentParent,
current
]
}
export const findBreadcrumb = (routes: RouteObject[] = [], targetPath: string): any =>
{
// 用于存储找到的最外层父节点
let outermostParent = null;
// 递归遍历路由配置的函数
function traverse(nodes, currentParent?: any) {
for (const node of nodes) {
// 如果当前节点有子节点,继续递归遍历
if (node.children && node.children.length >
0) {
// 检查当前节点的子节点中是否包含目标路径
const hasTarget = node.children.some(child => child.path === targetPath);
// 如果找到目标路径,记录当前节点作为父节点
if (hasTarget) {
// 最外层父节点是首次找到的包含目标路径的祖先节点
if (!outermostParent) {
outermostParent = node;
}
} else {
// 否则继续深入查找,当前节点作为临时父节点
traverse(node.children, node);
}
}
}
}
// 从根节点开始遍历
traverse(routes, null);
return outermostParent;
};

相关新闻

  • 详细介绍:深入理解 JVM 字节码文件:从组成结构到 Arthas 工具实践
  • (1-10-2)MyBatis 进阶篇 - 教程
  • Spark 性能优化全攻略:内存管理、shuffle 优化与参数调优 - 详解

最新新闻

  • KrillinAI终极指南:3分钟掌握AI视频翻译配音的完整解决方案
  • Agent Memory系统架构
  • 告别参数内卷!高端电视的产品力评判标准早已升级
  • 衡水及华北地区玻璃钢缠绕设备厂家实力排行盘点 - 起跑123
  • 靠谱的天津高端全屋定制工厂 怎么筛选不踩坑 - 信息热点
  • 新风空调怎么选?4大品牌实测对比,分预算精准推荐 - 信息热点

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号