Breadcrumb面包屑
显示当前页面在系统层级结构中的位置,并能向上返回。
何时使用
当系统拥有超过两级以上的层级结构时;
当需要告知用户『你在哪里』时;
当需要向上导航的功能时。
代码演示

最简单的用法。
import { Breadcrumb } from 'antd';ReactDOM.render(<Breadcrumb><Breadcrumb.Item>Home</Breadcrumb.Item><Breadcrumb.Item><a href="">Application Center</a></Breadcrumb.Item><Breadcrumb.Item><a href="">Application List</a></Breadcrumb.Item><Breadcrumb.Item>An Application</Breadcrumb.Item></Breadcrumb>,mountNode,);

和 react-router@4+,或其他路由进行结合使用。
import { HashRouter as Router, Route, Switch, Link, withRouter } from 'react-router-dom';import { Breadcrumb, Alert } from 'antd';const Apps = () => (<ul className="app-list"><li><Link to="/apps/1">Application1</Link>:<Link to="/apps/1/detail">Detail</Link></li><li><Link to="/apps/2">Application2</Link>:<Link to="/apps/2/detail">Detail</Link></li></ul>);const breadcrumbNameMap = {'/apps': 'Application List','/apps/1': 'Application1','/apps/2': 'Application2','/apps/1/detail': 'Detail','/apps/2/detail': 'Detail',};const Home = withRouter(props => {const { location } = props;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 (<div className="demo"><div className="demo-nav"><Link to="/">Home</Link><Link to="/apps">Application List</Link></div><Switch><Route path="/apps" component={Apps} /><Route render={() => <span>Home Page</span>} /></Switch><Alert style={{ margin: '16px 0' }} message="Click the navigation above to switch:" /><Breadcrumb>{breadcrumbItems}</Breadcrumb></div>);});ReactDOM.render(<Router><Home /></Router>,mountNode,);
.demo {margin: 16px;}.demo-nav {height: 30px;margin-bottom: 16px;line-height: 30px;background: #f8f8f8;}.demo-nav a {padding: 0 8px;line-height: 30px;}.app-list {margin-top: 16px;}

面包屑支持下拉菜单。
import { Breadcrumb, Menu } from 'antd';const menu = (<Menu><Menu.Item><a target="_blank" rel="noopener noreferrer" href="http://www.alipay.com/">General</a></Menu.Item><Menu.Item><a target="_blank" rel="noopener noreferrer" href="http://www.taobao.com/">Layout</a></Menu.Item><Menu.Item><a target="_blank" rel="noopener noreferrer" href="http://www.tmall.com/">Navigation</a></Menu.Item></Menu>);ReactDOM.render(<Breadcrumb><Breadcrumb.Item>Ant Design</Breadcrumb.Item><Breadcrumb.Item><a href="">Component</a></Breadcrumb.Item><Breadcrumb.Item overlay={menu}><a href="">General</a></Breadcrumb.Item><Breadcrumb.Item>Button</Breadcrumb.Item></Breadcrumb>,mountNode,);

图标放在文字前面。
import { Breadcrumb } from 'antd';import { HomeOutlined, UserOutlined } from '@ant-design/icons';ReactDOM.render(<Breadcrumb><Breadcrumb.Item href=""><HomeOutlined /></Breadcrumb.Item><Breadcrumb.Item href=""><UserOutlined /><span>Application List</span></Breadcrumb.Item><Breadcrumb.Item>Application</Breadcrumb.Item></Breadcrumb>,mountNode,);

使用 separator=">" 可以自定义分隔符。
import { Breadcrumb } from 'antd';ReactDOM.render(<Breadcrumb separator=">"><Breadcrumb.Item>Home</Breadcrumb.Item><Breadcrumb.Item href="">Application Center</Breadcrumb.Item><Breadcrumb.Item href="">Application List</Breadcrumb.Item><Breadcrumb.Item>An Application</Breadcrumb.Item></Breadcrumb>,mountNode,);

使用 Breadcrumb.Separator 可以自定义分隔符。
import { Breadcrumb } from 'antd';ReactDOM.render(<Breadcrumb separator=""><Breadcrumb.Item>Location</Breadcrumb.Item><Breadcrumb.Separator>:</Breadcrumb.Separator><Breadcrumb.Item href="">Application Center</Breadcrumb.Item><Breadcrumb.Separator /><Breadcrumb.Item href="">Application List</Breadcrumb.Item><Breadcrumb.Separator /><Breadcrumb.Item>An Application</Breadcrumb.Item></Breadcrumb>,mountNode,);
API
Breadcrumb
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| itemRender | 自定义链接函数,和 react-router 配置使用 | (route, params, routes, paths) => ReactNode | - | |
| params | 路由的参数 | object | - | |
| routes | router 的路由栈信息 | routes[] | - | |
| separator | 分隔符自定义 | ReactNode | / |
Breadcrumb.Item
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| className | 自定义类名 | string | - | |
| dropdownProps | 弹出下拉菜单的自定义配置 | Dropdown | - | |
| href | 链接的目的地 | string | - | |
| overlay | 下拉菜单的内容 | Menu | () => Menu | - | |
| onClick | 单击事件 | (e:MouseEvent) => void | - |
Breadcrumb.Separator
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| children | 要显示的分隔符 | ReactNode | / |
注意:在使用
Breadcrumb.Separator时,其父组件的分隔符必须设置为separator="",否则会出现父组件默认的分隔符。
routes
interface Route {path: string;breadcrumbName: string;children: Array<{path: string;breadcrumbName: string;}>;}
和 browserHistory 配合
和 react-router 一起使用时,默认生成的 url 路径是带有 # 的,如果和 browserHistory 一起使用的话,你可以使用 itemRender 属性定义面包屑链接。
import { Link } from 'react-router';const routes = [{path: 'index',breadcrumbName: 'home',},{path: 'first',breadcrumbName: 'first',children: [{path: '/general',breadcrumbName: 'General',},{path: '/layout',breadcrumbName: 'Layout',},{path: '/navigation',breadcrumbName: 'Navigation',},],},{path: 'second',breadcrumbName: 'second',},];function itemRender(route, params, routes, paths) {const last = routes.indexOf(route) === routes.length - 1;return last ? (<span>{route.breadcrumbName}</span>) : (<Link to={paths.join('/')}>{route.breadcrumbName}</Link>);}return <Breadcrumb itemRender={itemRender} routes={routes} />;
当前内容版权归 Ant Design 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Ant Design .