Back to Ant Design

Breadcrumb

components/breadcrumb/index.zh-CN.md

6.3.74.3 KB
Original Source

何时使用 {#when-to-use}

  • 当系统拥有超过两级以上的层级结构时;
  • 当需要告知用户『你在哪里』时;
  • 当需要向上导航的功能时。
jsx
// >=5.3.0 可用,推荐的写法 ✅
return <Breadcrumb items={[{ title: 'sample' }]} />;

// <5.3.0 可用,>=5.3.0 时不推荐 🙅🏻‍♀️
return (
  <Breadcrumb>
    <Breadcrumb.Item>sample</Breadcrumb.Item>
  </Breadcrumb>
);

// 或

return <Breadcrumb routes={[{ breadcrumbName: 'sample' }]} />;

代码演示 {#examples}

<!-- prettier-ignore -->

<code src="./demo/basic.tsx">基本</code> <code src="./demo/withIcon.tsx">带有图标的</code> <code src="./demo/withParams.tsx">带有参数的</code> <code src="./demo/separator.tsx">分隔符</code> <code src="./demo/overlay.tsx">带下拉菜单的面包屑</code> <code src="./demo/separator-component.tsx">独立的分隔符</code> <code src="./demo/debug-routes.tsx">Debug Routes</code> <code src="./demo/style-class.tsx" version="6.0.0">自定义语义结构的样式和类</code> <code src="./demo/component-token.tsx" debug>组件 Token</code>

API

通用属性参考:通用属性

参数说明类型默认值版本
classNames用于自定义组件内部各语义化结构的 class,支持对象或函数Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
dropdownIcon自定义下拉图标ReactNode<DownOutlined />6.2.0
itemRender自定义链接函数,和 react-router 配置使用(route, params, routes, paths) => ReactNode-
params路由的参数object-
items路由栈信息items[]-5.3.0
separator分隔符自定义ReactNode/
styles用于自定义组件内部各语义化结构的行内 style,支持对象或函数Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-

ItemType

type ItemType = Omit<RouteItemType, 'title' | 'path'> | SeparatorType

RouteItemType

参数说明类型默认值版本
className自定义类名string-
dropdownProps弹出下拉菜单的自定义配置Dropdown-
href链接的目的地,不能和 path 共用string-
path拼接路径,每一层都会拼接前一个 path 信息。不能和 href 共用string-
menu菜单配置项MenuProps-4.24.0
onClick单击事件(e:MouseEvent) => void-
title名称ReactNode-5.3.0

SeparatorType

ts
const item = {
  type: 'separator', // Must have
  separator: '/',
};
参数说明类型默认值版本
type标记为分隔符separator5.3.0
separator要显示的分隔符ReactNode/5.3.0

和 browserHistory 配合 {#use-with-browserhistory}

和 react-router 一起使用时,默认生成的 url 路径是带有 # 的,如果和 browserHistory 一起使用的话,你可以使用 itemRender 属性定义面包屑链接。

jsx
import { Link } from 'react-router';

const items = [
  {
    path: '/index',
    title: 'home',
  },
  {
    path: '/first',
    title: 'first',
    children: [
      {
        path: '/general',
        title: 'General',
      },
      {
        path: '/layout',
        title: 'Layout',
      },
      {
        path: '/navigation',
        title: 'Navigation',
      },
    ],
  },
  {
    path: '/second',
    title: 'second',
  },
];

function itemRender(currentRoute, params, items, paths) {
  const isLast = currentRoute?.path === items[items.length - 1]?.path;

  return isLast ? (
    <span>{currentRoute.title}</span>
  ) : (
    <Link to={`/${paths.join('/')}`}>{currentRoute.title}</Link>
  );
}

return <Breadcrumb itemRender={itemRender} items={items} />;

Semantic DOM

<code src="./demo/_semantic.tsx" simplify="true"></code>

主题变量(Design Token){#design-token}

<ComponentTokenTable component="Breadcrumb"></ComponentTokenTable>