Breadcrumb 面包屑 #
概述 #
Breadcrumb 面包屑用于显示当前页面在系统层级结构中的位置,帮助用户了解当前位置并快速返回上级页面。
基础用法 #
基本使用 #
tsx
import { Breadcrumb } from 'antd';
import { HomeOutlined } from '@ant-design/icons';
const items = [
{ title: <HomeOutlined /> },
{ title: <a href="">应用中心</a> },
{ title: <a href="">应用列表</a> },
{ title: '应用详情' },
];
<Breadcrumb items={items} />
带图标 #
tsx
import { Breadcrumb } from 'antd';
import { HomeOutlined, UserOutlined } from '@ant-design/icons';
const items = [
{
href: '/',
title: (
<>
<HomeOutlined />
<span>首页</span>
</>
),
},
{
href: '/user',
title: (
<>
<UserOutlined />
<span>用户中心</span>
</>
),
},
{
title: '用户列表',
},
];
<Breadcrumb items={items} />
分隔符 #
tsx
import { Breadcrumb } from 'antd';
const items = [
{ title: <a href="">首页</a> },
{ title: <a href="">应用中心</a> },
{ title: '应用列表' },
];
<Breadcrumb separator=">" items={items} />
下拉菜单 #
tsx
import { Breadcrumb, Menu } from 'antd';
const items = [
{ title: <a href="">首页</a> },
{
title: (
<a href="">组件</a>
),
menu: {
items: [
{ key: '1', label: <a href="">通用</a> },
{ key: '2', label: <a href="">布局</a> },
{ key: '3', label: <a href="">导航</a> },
],
},
},
{ title: '面包屑' },
];
<Breadcrumb items={items} />
独立分隔符 #
tsx
import { Breadcrumb } from 'antd';
const items = [
{ title: '首页' },
{
title: '组件',
menu: {
items: [
{ key: '1', label: '通用' },
{ key: '2', label: '布局' },
{ key: '3', label: '导航' },
],
},
},
{ title: '面包屑' },
];
<Breadcrumb items={items} />
API #
Breadcrumb #
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| itemRender | 自定义链接函数 | (route, params, routes, paths) => ReactNode | - |
| items | 路由栈信息 | ItemType[] | - |
| params | 路由参数 | object | - |
| separator | 分隔符 | ReactNode | / |
ItemType #
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| className | 自定义类名 | string | - |
| dropdownProps | 弹出下拉菜单属性 | DropdownProps | - |
| href | 链接地址 | string | - |
| key | 唯一标识 | string | - |
| menu | 下拉菜单 | MenuProps | - |
| path | 路由路径 | string | - |
| title | 内容 | ReactNode | - |
| onClick | 点击事件 | (e: React.MouseEvent) => void | - |
最佳实践 #
1. 配合路由使用 #
tsx
import { Breadcrumb } from 'antd';
import { useLocation, Link } from 'react-router-dom';
const breadcrumbNameMap = {
'/home': '首页',
'/home/user': '用户管理',
'/home/user/list': '用户列表',
'/home/user/detail': '用户详情',
};
const BreadcrumbWithRouter = () => {
const location = useLocation();
const pathSnippets = location.pathname.split('/').filter((i) => i);
const extraBreadcrumbItems = pathSnippets.map((_, index) => {
const url = `/${pathSnippets.slice(0, index + 1).join('/')}`;
return {
key: url,
title: <Link to={url}>{breadcrumbNameMap[url]}</Link>,
};
});
const breadcrumbItems = [
{
title: <Link to="/home">首页</Link>,
key: 'home',
},
].concat(extraBreadcrumbItems);
return <Breadcrumb items={breadcrumbItems} />;
};
2. 配合 Layout 使用 #
tsx
import { Layout, Breadcrumb } from 'antd';
const { Content } = Layout;
const items = [
{ title: <a href="">首页</a> },
{ title: <a href="">列表</a> },
{ title: '详情' },
];
<Content style={{ padding: '0 50px' }}>
<Breadcrumb style={{ margin: '16px 0' }} items={items} />
<div style={{ background: '#fff', padding: 24, minHeight: 280 }}>
内容
</div>
</Content>
3. 动态面包屑 #
tsx
import { Breadcrumb } from 'antd';
import { useState, useEffect } from 'react';
const DynamicBreadcrumb = () => {
const [items, setItems] = useState([]);
useEffect(() => {
const path = window.location.pathname;
const newItems = generateBreadcrumbItems(path);
setItems(newItems);
}, []);
return <Breadcrumb items={items} />;
};
下一步 #
接下来学习 Form 表单 组件!
最后更新:2026-03-28