面包屑新玩法,ReactRouter+Ant Design实现动态渲染

embedded/2024/11/25 22:32:40/

在这里插入图片描述

在Ant Design中,可以通过Breadcrumb组件结合react-router库实现动态生成面包屑导航。具体步骤如下:

  1. 定义路由配置数据结构

我们需要在路由配置中添加额外的面包屑相关信息,例如面包屑标题、icon等。例如:

const routes = [{path: '/',breadcrumbName: '首页'},{path: '/users',breadcrumbName: '用户管理',children: [{path: '/users/list',breadcrumbName: '用户列表'},{path: '/users/add',breadcrumbName: '新增用户'}]}
]
  1. 渲染面包屑组件

我们可以使用react-router提供的useLocationhook获取当前路由location对象,并根据这个location对象解析出对应的面包屑路径。

import { Breadcrumb } from 'antd';
import { Link, useLocation } from 'react-router-dom';function BreadcrumbComponent() {const location = useLocation();const breadcrumbNameMap = routes.reduce((obj, item) => {obj[item.path] = item.breadcrumbName;return obj;}, {});const pathSnippets = location.pathname.split('/').filter(i => i);const extraBreadcrumbItems = pathSnippets.map((_, index) => {const url = `/${pathSnippets.slice(0, index + 1).join('/')}`;return (<Breadcrumb.Item key={url}><Link to={url}>{breadcrumbNameMap[url]}</Link></Breadcrumb.Item>);});const breadcrumbItems = [<Breadcrumb.Item key="home"><Link to="/">Home</Link></Breadcrumb.Item>].concat(extraBreadcrumbItems);return <Breadcrumb>{breadcrumbItems}</Breadcrumb>;
}
  1. 在需要的位置渲染面包屑组件
function App() {return (<div><BreadcrumbComponent /><Switch>{/* 路由配置 */}</Switch></div>);
}

通过以上步骤,我们就可以在Ant Design应用中根据当前路由动态生成面包屑导航了。需要注意的是:

  • 这种方式需要在路由配置中添加额外的面包屑信息
  • 面包屑组件需要根据路由配置动态生成,无法像静态配置那样直接写在jsx中
  • 需要处理路由嵌套和动态路由参数的情况

如果你需要处理动态路由参数的场景,可以进一步扩展breadcrumbNameMap函数来处理动态路径。总的来说,通过react-router提供的hooks和Ant Design的Breadcrumb组件,我们可以较为简单地实现动态生成面包屑的需求。


http://www.ppmy.cn/embedded/12758.html

相关文章

深度学习的发展历程与未来展望

深度学习是人工智能领域的一个重要分支&#xff0c;它利用神经网络模拟人类大脑的学习过程&#xff0c;通过大量数据训练模型&#xff0c;使其能够自动提取特征、识别模式、进行分类和预测等任务。近年来&#xff0c;深度学习在多个领域取得了显著的进展&#xff0c;尤其在自然…

Hadoop实战——MapReduce-字符统计(超详细教学,算法分析)

目录 一、前提准备工作 启动hadoop集群 二、实验过程 1.虚拟机安装先设置端口转发 2.上传对应文件 3.编写Java应用程序 4. 编译打包程序 5. 运行程序 三、算法设计和分析 算法设计 算法分析 四、实验总结 实验目的&#xff1a;给定一份英文文本&#xff0c;统计每个…

JS-43-Node.js02-安装Node.js和npm

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;可以让JavaScript实现后端开发&#xff0c;所以&#xff0c;首先在本机安装Node.js环境。 一、安装Node.js 官网&#xff1a;下载 Node.js 默认两个版本的下载&#xff1a; 64位windows系统的LTS(Long Tim…

Java | Leetcode Java题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution {public int trap(int[] height) {int n height.length;if (n 0) {return 0;}int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i]);}int[] …

【八股】Redis篇

使用场景 &#x1f642;缓存&#xff1a;缓存穿透、击穿、雪崩、双写一致、持久化、数据过期、数据淘汰策略 &#x1f642;分布式锁&#xff1a;setnx、redisson &#x1f642;消息队列、延迟队列、保存token&#xff1a;何种数据类型 &#x1f642;计数器 数据类型和它们底层…

“五之链”第十六期沙龙活动在呆马科技成功举办

2024年4月19日&#xff0c;由临沂呆码区块链网络科技有限公司&#xff08;呆马科技&#xff09;承办的第十六期“五之链”物流主题沙龙活动成功举办。此次活动邀请了政府相关部门、知名科研院所、物流企业等20余家单位参与&#xff0c;共同探讨物流数据要素流通与智能应用的发展…

python常用高阶函数

map函数 map(function, iterable1[, iterable2, …]) map() 是 Python 内置的高阶函数&#xff0c;它用于将一个或多个可迭代对象&#xff08;如列表、元组、字符串等&#xff09;中的每个元素按照指定的函数进行处理&#xff0c;并返回一个迭代器&#xff08;iterator&#xf…

[笔试强训day04]

文章目录 WY22 Fibonacci数列NC242 单词搜索BC140 杨辉三角 WY22 Fibonacci数列 WY22 Fibonacci数列 #include<iostream> #include<cmath>using namespace std;int n;int main() {cin>>n;int a0,b1,c1;while(n>c){ab;bc;cab;}int ansmin(n-b,c-n);cout&l…