ProComponents, templates & AI tooling
HeroUI
27.7k

Breadcrumbs

Breadcrumbs 从 HeroUI v2 到 v3 的迁移指南。

完整的 API 参考、样式指南与高级示例请参阅 v3 Breadcrumbs 文档。本指南只关注从 HeroUI v2 的迁移。

结构变化

在 v2 中,Breadcrumbs 接受 items prop 或子节点:

import { Breadcrumbs, BreadcrumbItem } from "@heroui/react";

export default function App() {
  return (
    <Breadcrumbs>
      <BreadcrumbItem href="#">Home</BreadcrumbItem>
      <BreadcrumbItem href="#">Products</BreadcrumbItem>
      <BreadcrumbItem>Current Page</BreadcrumbItem>
    </Breadcrumbs>
  );
}

在 v3 中,Breadcrumbs 改为复合组件模式,由 BreadcrumbsBreadcrumbsItem 组成:

import { Breadcrumbs, BreadcrumbsItem } from "@heroui/react";

export default function App() {
  return (
    <Breadcrumbs>
      <BreadcrumbsItem href="#">Home</BreadcrumbsItem>
      <BreadcrumbsItem href="#">Products</BreadcrumbsItem>
      <BreadcrumbsItem>Current Page</BreadcrumbsItem>
    </Breadcrumbs>
  );
}

主要变化

1. 组件名称:BreadcrumbItemBreadcrumbsItem

v2: 使用 BreadcrumbItem(单数)
v3: 使用 BreadcrumbsItem(复数)

2. 自定义分隔符

v2: 通过 prop 自定义分隔符
v3: 通过在 Breadcrumbs 根节点上设置 separator prop 自定义

3. 内置链接组件

v2: 项目可以是链接或纯文本
v3: 当提供 href 时,项目会自动使用 Link 组件

4. Prop 变更

v2 propv3 位置说明
maxItems-已移除(渲染全部项目,或自行实现折叠逻辑)
itemsBeforeCollapseitemsAfterCollapserenderEllipsis-已移除(与 maxItems 折叠/省略号一并移除)
items(prop 写法)-改用子节点
onAction-如有需要,可在单个项目上使用 onPress
isDisabled根节点上的 isDisabled现在根节点支持,可一次性禁用全部面包屑链接
classNamesitemClasses-改用 BreadcrumbsBreadcrumbsItem 上的 className

5. 根节点上的 isDisabled prop

v2: 根组件不支持 isDisabled
v3: Breadcrumbs 根节点支持 isDisabled,可立即禁用所有面包屑链接

6. 自动 aria-current="page" 行为

v3: 最后一个未提供 href 的面包屑项目会自动带上 aria-current="page",向辅助技术指明当前页面,无需手动配置。

7. 集成 React Aria Components

v3: 基于 React Aria Components 构建,提供更佳的无障碍体验与键盘导航支持。

迁移示例

自定义分隔符

<Breadcrumbs separator="/">
  <BreadcrumbItem href="#">Home</BreadcrumbItem>
  <BreadcrumbItem>Current</BreadcrumbItem>
</Breadcrumbs>
import { Icon } from "@iconify/react";
import { Breadcrumbs, BreadcrumbsItem } from "@heroui/react";

<Breadcrumbs separator={<Icon icon="gravity-ui:caret-right" />}>
  <BreadcrumbsItem href="#">Home</BreadcrumbsItem>
  <BreadcrumbsItem>Current</BreadcrumbsItem>
</Breadcrumbs>

禁用状态

{/* v2 did not support isDisabled on the root */}
<Breadcrumbs>
  <BreadcrumbItem href="#">Home</BreadcrumbItem>
  <BreadcrumbItem>Current</BreadcrumbItem>
</Breadcrumbs>
{/* v3 supports isDisabled on root to disable all links */}
<Breadcrumbs isDisabled>
  <BreadcrumbsItem href="#">Home</BreadcrumbsItem>
  <BreadcrumbsItem>Current</BreadcrumbsItem>
</Breadcrumbs>

总结

  • BreadcrumbItem 重命名为 BreadcrumbsItem
  • 在根节点上设置 separator,可以是字符串或 React 元素(例如图标)
  • 提供 href 的项目会自动使用内置 Link
  • 根节点现在支持 isDisabled,可立即禁用全部面包屑链接
  • 最后一个未提供 href 的项目会自动带上 aria-current="page",提升无障碍体验
  • v3 不再提供 maxItems / 折叠功能——请显示全部项目或自行实现;用 className 取代 classNames / itemClasses
  • 基于 React Aria Components 构建,更易实现无障碍

本页目录