Skyroc UI
导航

Breadcrumb

展示当前位置层级并支持跳转的面包屑导航组件

面包屑(Breadcrumb)用于展示当前页面在信息架构中的位置,帮助用户理解路径并快速返回上级页面。

import {
  Breadcrumb,
  BreadcrumbEllipsis,
  BreadcrumbItemContent,
  BreadcrumbLink,
  BreadcrumbList,
  BreadcrumbPage,
  BreadcrumbRoot,
  BreadcrumbSeparator
} from '@skyroc/web-ui';

架构说明

Breadcrumb 是数据驱动组件,主组件接收 items 并自动渲染根导航、列表、条目、链接、当前页和分隔符。

  • BreadcrumbRoot:语义化 nav 容器,默认带 aria-label="breadcrumb"
  • BreadcrumbList:有序列表容器。
  • BreadcrumbItemContent:单个路径节点容器。
  • BreadcrumbLink:可点击链接;当 item 有 href 时使用。
  • BreadcrumbPage:当前页展示;当 item 没有 href 时使用。
  • BreadcrumbEllipsis:折叠路径项的省略入口,可配合 DropdownMenu 展示隐藏项。

何时使用

  • 页面存在明确层级路径,需要告诉用户当前位置。
  • 用户需要从详情页、设置页或深层页面快速返回上级。
  • 路径较长时需要折叠中间层级,并通过下拉菜单访问隐藏项。
  • 需要在路径节点中加入图标、状态标签或自定义渲染内容。

基础用法

通过 items 传入路径数据。没有 href 的节点会渲染为当前页样式;有 href 的节点会渲染为链接。

Preview
Code
Loading...

自定义条目

通过 renderItem 自定义每个路径节点的渲染内容,适合接入路由组件或复杂节点。

Preview
Code
Loading...

自定义分隔符

通过 separator 替换默认的右箭头分隔符。

Preview
Code
Loading...

链接

当 item 中包含 href 时,组件会使用 BreadcrumbLink 渲染该节点。

Preview
Code
Loading...

折叠

设置 ellipsis 后,当条目数量大于 4 时,组件会折叠中间项,并用 DropdownMenu 展示被折叠的路径。

Preview
Code
Loading...

自定义折叠

通过 ellipsisIcon 替换省略图标;通过 renderEllipsis 可以完全自定义折叠入口。

Preview
Code
Loading...

下拉条目

通过 renderItem 结合 DropdownMenu,可以让某个路径节点本身成为下拉入口。

Preview
Code
Loading...

尺寸

通过 size 控制整体字号和间距,从 xs2xl 共 6 个尺寸。

Preview
Code
Loading...

自定义样式

通过 classNames 控制 rootlistitemseparatorellipsis 等 slot。主组件的 classNames 不包含 linkpage,这两个 slot 通过 linkPropspageProps 单独传入。

API

通用属性参考:根容器基于 nav 元素,支持原生 nav 属性、sizeclassName

属性说明类型默认值
items*面包屑数据列表BreadcrumbItem[]-
size尺寸,影响字号与间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
ellipsis折叠配置;true 时条目数大于 4 自动折叠中间项true | [number, number] | null-
ellipsisDropdownProps折叠项下拉菜单属性,不包含 children 和 itemsOmit<DropdownMenuProps, 'children' | 'items'>-
ellipsisIcon自定义折叠入口图标ReactNode-
ellipsisProps传递给 BreadcrumbEllipsis 的额外 propsBreadcrumbEllipsisProps-
handleItemClick点击路径项时触发(item: BreadcrumbItem) => void-
renderEllipsis自定义折叠入口渲染(items: BreadcrumbItem[]) => ReactNode-
renderItem自定义路径项内容渲染(item: BreadcrumbItem) => ReactNode-
separator自定义分隔符ReactNode-
className根容器 classClassValue-
classNames各 slot 的自定义 class(不含 link / page)Omit<BreadcrumbUi, 'link' | 'page'>-
itemProps传递给 BreadcrumbItemContent 的额外 propsBreadcrumbItemProps-
linkProps传递给 BreadcrumbLink 的额外 propsBreadcrumbLinkProps-
listProps传递给 BreadcrumbList 的额外 propsBreadcrumbListProps-
pageProps传递给 BreadcrumbPage 的额外 propsBreadcrumbPageProps-
separatorProps传递给 BreadcrumbSeparator 的额外 propsBreadcrumbSeparatorProps-
ref指向底层 nav 元素的 refRef<HTMLElement>-

子组件

属性说明类型默认值
BreadcrumbRoot根导航容器BreadcrumbRootProps-
BreadcrumbList有序列表容器BreadcrumbListProps-
BreadcrumbItemContent单个路径项容器BreadcrumbItemProps-
BreadcrumbLink路径链接,支持 asChildBreadcrumbLinkProps-
BreadcrumbPage当前页节点BreadcrumbPageProps-
BreadcrumbSeparator分隔符节点BreadcrumbSeparatorProps-
BreadcrumbEllipsis折叠入口节点BreadcrumbEllipsisProps-

类型

BreadcrumbProps<T extends BreadcrumbItem>

主组件属性。继承 BreadcrumbRootProps,并增加数据、折叠、渲染和 slot 配置。

字段类型说明
classNameClassValue根容器 class。来自 BreadcrumbRootProps。
classNamesOmit<BreadcrumbUi, 'link' | 'page'>主组件可配置 slot class。
ellipsistrue | [number, number] | null折叠配置。true 时条目数大于 4 折叠中间项。
ellipsisDropdownPropsOmit<DropdownMenuProps, 'children' | 'items'>折叠下拉菜单属性。
ellipsisIconReact.ReactNode折叠入口图标。
ellipsisPropsBreadcrumbEllipsisProps折叠入口组件属性。
handleItemClick(item: T) => void点击路径项时触发。
itemPropsBreadcrumbItemProps路径项容器属性。
items*T[]路径数据列表。
linkPropsBreadcrumbLinkProps链接组件属性。
listPropsBreadcrumbListProps列表容器属性。
pagePropsBreadcrumbPageProps当前页组件属性。
renderEllipsis(items: T[]) => React.ReactNode自定义折叠入口渲染。
renderItem(item: T) => React.ReactNode自定义路径项内容渲染。
separatorReact.ReactNode分隔符内容。
separatorPropsBreadcrumbSeparatorProps分隔符组件属性。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸。来自 BreadcrumbRootProps。

BreadcrumbItem

路径项数据结构。继承 BreadcrumbLinkProps 和 SlotProps。

字段类型说明
asChildboolean链接渲染时是否使用 asChild。来自 BreadcrumbLinkProps。
classNameClassValue该路径项自定义 class。
hrefstring链接地址。存在 href 时渲染为 BreadcrumbLink。
label*React.ReactNode显示内容。
leadingReact.ReactNode前置插槽内容。
targetHTMLAttributeAnchorTarget链接打开方式。来自 a 元素属性。
trailingReact.ReactNode后置插槽内容。
value*string唯一标识。
...React.AnchorHTMLAttributes<HTMLAnchorElement>React.AnchorHTMLAttributes<HTMLAnchorElement>支持其余 a 元素属性。

BreadcrumbUi

Breadcrumb 全部 slot 的 class 配置。

字段类型说明
ellipsisClassValue折叠入口 class。
itemClassValue路径项容器 class。
linkClassValue链接 class。主组件 classNames 不直接接收该字段。
listClassValue列表容器 class。
pageClassValue当前页 class。主组件 classNames 不直接接收该字段。
rootClassValue根容器 class。
separatorClassValue分隔符 class。

BreadcrumbRootProps

根容器属性,等价于 HTMLComponentProps<"nav">。

字段类型说明
childrenReact.ReactNode子节点。
classNameClassValue根容器 class。
idstringDOM id。
refRef<HTMLElement>nav 元素 ref。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸,影响整体字号。

BreadcrumbListProps

列表容器属性,等价于 HTMLComponentProps<"ol">。

字段类型说明
childrenReact.ReactNode列表内容。
classNameClassValue列表 class。
refRef<HTMLOListElement>ol 元素 ref。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸,影响列表间距。

BreadcrumbItemProps

路径项容器属性,等价于 HTMLComponentProps<"li">。

字段类型说明
childrenReact.ReactNode路径项内容。
classNameClassValue路径项 class。
refRef<HTMLLIElement>li 元素 ref。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸,影响路径项间距。

链接属性。继承 HTMLComponentProps<"a"> 并额外支持 asChild。

字段类型说明
asChildboolean使用 Radix Slot 将链接行为合并到子元素。
childrenReact.ReactNode链接内容。
classNameClassValue链接 class。
hrefstring链接地址。
refRef<HTMLAnchorElement>a 元素 ref。
targetHTMLAttributeAnchorTarget链接打开方式。

BreadcrumbPageProps

当前页节点属性,等价于 HTMLComponentProps<"span">。

字段类型说明
childrenReact.ReactNode当前页内容。
classNameClassValue当前页 class。
refRef<HTMLSpanElement>span 元素 ref。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸属性。

BreadcrumbSeparatorProps

分隔符属性,等价于 HTMLComponentProps<"li">。

字段类型说明
childrenReact.ReactNode自定义分隔符内容。默认使用 ChevronRight。
classNameClassValue分隔符 class。
refRef<HTMLLIElement>li 元素 ref。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸属性。

BreadcrumbEllipsisProps

折叠入口属性,等价于 HTMLComponentProps<"span">。

字段类型说明
childrenReact.ReactNode自定义折叠图标。默认使用 Ellipsis。
classNameClassValue折叠入口 class。
refRef<HTMLSpanElement>span 元素 ref。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸属性。

SlotProps

路径项前后插槽类型。

字段类型说明
leadingReactNode前置插槽内容。
trailingReactNode后置插槽内容。

BreadcrumbSlots

Breadcrumb 可配置 classNames 的 slot

'ellipsis' | 'item' | 'link' | 'list' | 'page' | 'root' | 'separator'

ClassValue

CSS 类名类型

string | null | undefined | Record<string, boolean> | ClassValue[]

On this page