Breadcrumb — это компонент, позволяющий создавать навигационные цепочки, которые показывают пользователю путь к текущей странице в приложении. В Chakra UI он реализован с высокой степенью кастомизации, поддерживает адаптивность и интеграцию с React Router или Next.js Link.
Chakra UI разбивает Breadcrumb на несколько ключевых частей:
BreadcrumbItem./.Простейшая структура выглядит так:
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbSeparator } from "@chakra-ui/react";
<Breadcrumb>
<BreadcrumbItem>
<BreadcrumbLink href="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink href="/blog">Блог</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem isCurrentPage>
<BreadcrumbLink href="/blog/react-chakra">React & Chakra UI</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
Ключевые моменты:
isCurrentPage указывает, что элемент
представляет текущую страницу. Он автоматически делает текст не
кликабельным и добавляет семантический
aria-current="page".BreadcrumbSeparator можно кастомизировать через
свойство separator.Разделитель по умолчанию — /. Его можно заменить на
любой JSX элемент:
<Breadcrumb separator=">">
<BreadcrumbItem>
<BreadcrumbLink href="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink href="/about">О нас</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
Можно использовать и иконки из Chakra UI или внешние SVG:
import { ChevronRightIcon } from "@chakra-ui/icons";
<Breadcrumb separator={<ChevronRightIcon color="gray.500" />}>
<BreadcrumbItem>
<BreadcrumbLink href="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink href="/services">Сервисы</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
По умолчанию Breadcrumb располагается горизонтально. Для вертикальной
навигации можно использовать Stack или Flex
для управления ориентацией:
import { VStack } from "@chakra-ui/react";
<VStack align="start">
<Breadcrumb>
<BreadcrumbItem>
<BreadcrumbLink href="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink href="/catalog">Каталог</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
</VStack>
Chakra UI позволяет применять стили на уровне
Breadcrumb, BreadcrumbItem и
BreadcrumbLink.
<Breadcrumb spacing="8px" separator="•" fontSize="lg" color="teal.600">
<BreadcrumbItem>
<BreadcrumbLink href="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink href="/portfolio">Портфолио</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
Возможные свойства:
spacing — расстояние между элементами.separator — разделитель.fontSize, color, fontWeight —
стили текста.isCurrentPage — делает элемент неактивным и
семантически текущей страницей.Chakra UI поддерживает использование компонентов Link
вместо обычного a.
React Router:
import { Link as RouterLink } from "react-router-dom";
<Breadcrumb>
<BreadcrumbItem>
<BreadcrumbLink as={RouterLink} to="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink as={RouterLink} to="/profile">Профиль</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
Next.js:
import NextLink from "next/link";
<Breadcrumb>
<BreadcrumbItem>
<BreadcrumbLink as={NextLink} href="/">Главная</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbLink as={NextLink} href="/blog">Блог</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
Breadcrumb автоматически обрезает элементы при уменьшении ширины
контейнера. Для более гибкого управления можно использовать свойство
isTruncated у BreadcrumbLink:
<Breadcrumb>
<BreadcrumbItem>
<BreadcrumbLink isTruncated href="/very/long/path">Очень длинный путь</BreadcrumbLink>
</BreadcrumbItem>
</Breadcrumb>
BreadcrumbLink поддерживает все стандартные события
React, такие как onClick, onMouseEnter,
onFocus. Это позволяет добавлять трекинг кликов или
кастомное поведение при переходе по ссылке:
<BreadcrumbItem>
<BreadcrumbLink
href="/dashboard"
onCl ick={() => console.log("Переход на Dashboard")}
>
Dashboard
</BreadcrumbLink>
</BreadcrumbItem>
Breadcrumb в Chakra UI сочетает семантику, гибкость и простоту использования. Он легко интегрируется с маршрутизацией, поддерживает кастомные разделители, стили и адаптивное поведение, что делает его мощным инструментом для построения навигационных цепочек в React-приложениях.