Компонент Link в Chakra UI представляет
собой мощный и гибкий инструмент для создания гиперссылок и
навигационных элементов в приложениях на JavaScript и React. Он
объединяет стандартный HTML-тег <a> с возможностями
библиотеки Chakra UI, обеспечивая удобное управление стилями и
поведением ссылок.
1. href Определяет адрес назначения
ссылки. Это стандартное свойство, аналогичное атрибуту HTML
<a>.
import { Link } from "@chakra-ui/react";
<Link href="https://chakra-ui.com">Документация Chakra UI</Link>
2. isExternal Позволяет автоматически
открывать ссылку в новой вкладке и добавлять атрибут
rel="noopener noreferrer" для безопасности.
<Link href="https://chakra-ui.com" isExternal>
Внешняя документация
</Link>
3. colorScheme и стилизация Можно
использовать пропсы color, fontWeight,
textDecoration и другие для кастомизации внешнего вида
ссылки. Chakra UI также поддерживает темы, что упрощает единообразное
оформление ссылок в приложении.
<Link color="teal.500" fontWeight="bold" textDecoration="underline">
Акцентная ссылка
</Link>
Для работы с роутингом в React часто используется
react-router-dom. Chakra UI позволяет
интегрировать свой компонент Link с маршрутизатором,
сохраняя консистентность стилей.
import { Link as ChakraLink } from "@chakra-ui/react";
import { Link as RouterLink } from "react-router-dom";
<ChakraLink as={RouterLink} to="/about" color="blue.500">
О нас
</ChakraLink>
as позволяет заменить стандартный HTML-тег на
другой компонент, например RouterLink.to используется вместо href для
маршрутизатора.Chakra UI предоставляет поддержку псевдоклассов CSS,
таких как hover, focus и active,
с помощью системного пропа _hover, _focus,
_active.
<Link
href="#"
color="gray.700"
_hover={{ color: "blue.500", textDecoration: "underline" }}
_focus={{ boxShadow: "outline" }}
>
Наведение и фокус
</Link>
_hover — стиль при наведении курсора._focus — стиль при фокусе (например, при использовании
клавиатуры)._active — стиль при активном нажатии.Ссылки можно сочетать с компонентами
Button, создавая кнопки-ссылки. Это
полезно для случаев, когда визуально элемент выглядит как кнопка, но
функционально является ссылкой.
import { Button, Link } from "@chakra-ui/react";
<Link href="/signup" style={{ textDecoration: 'none' }}>
<Button colorScheme="teal">Регистрация</Button>
</Link>
style={{ textDecoration: 'none' }} убирает
стандартное подчеркивание ссылки.Chakra UI поддерживает адаптивные стили, позволяя менять внешний вид ссылок в зависимости от размера экрана:
<Link
href="/pricing"
fontSize={{ base: "sm", md: "md", lg: "lg" }}
color={{ base: "gray.600", md: "teal.500" }}
>
Цены
</Link>
base — значение по умолчанию для мобильных
устройств.md, lg — значения для средних и больших
экранов.Также возможно добавлять иконки и визуальные индикаторы прямо внутри ссылок:
import { Link, Icon } from "@chakra-ui/react";
import { ExternalLinkIcon } from "@chakra-ui/icons";
<Link href="https://chakra-ui.com" isExternal color="purple.500">
Документация <Icon as={ExternalLinkIcon} mx="2px" />
</Link>
Icon легко интегрируется внутрь ссылки,
сохраняя правильное позиционирование и отступы.Для создания навигационных меню и списков ссылок можно комбинировать
Link с компонентами Stack,
VStack,
HStack:
import { VStack, Link } from "@chakra-ui/react";
<VStack align="start" spacing={3}>
<Link href="/">Главная</Link>
<Link href="/about">О нас</Link>
<Link href="/contact">Контакты</Link>
</VStack>
VStack упрощает вертикальное выравнивание ссылок с
равными промежутками.HStack аналогично работает для горизонтальных
меню.Компонент Link в Chakra UI обеспечивает
единообразное оформление, интеграцию с роутингом, поддержку адаптивности
и интерактивности. Он сочетает гибкость HTML-ссылок с удобными
инструментами библиотеки для стилизации и управления состояниями, что
делает его основой для любых навигационных элементов в
React-приложениях.