Компонент Link в Chakra UI представляет собой
стилизованный HTML-элемент <a>, который расширяет
стандартные возможности ссылки, предоставляя встроенную поддержку темы,
состояния наведения, фокуса и адаптивной стилизации. Он интегрируется с
системой стилей Chakra UI, что позволяет использовать свойства
из темы, такие как цвета, размеры шрифтов, отступы и
типографику.
Базовый пример создания ссылки:
import { Link } from '@chakra-ui/react';
function App() {
return (
<Link href="https://chakra-ui.com" color="teal.500" isExternal>
Официальный сайт Chakra UI
</Link>
);
}
Ключевые моменты:
href — стандартный атрибут
ссылки.color — цвет текста, можно
использовать значения из темы Chakra (teal.500,
blue.600 и т.д.).isExternal — указывает, что ссылка
ведет на внешний ресурс; добавляет иконку внешней ссылки и атрибут
target="_blank".Состояния
<Link
href="#"
color="blue.500"
_hover={{ textDecoration: "underline", color: "blue.700" }}
_focus={{ boxShadow: "outline" }}
>
Наведи и кликни
</Link>
isExternal
rel="noopener noreferrer" и
target="_blank" для безопасности при открытии внешних
сайтов.Композиция с Box и Text Компонент Link можно использовать внутри других компонентов Chakra, таких как Box или Text, чтобы создавать более сложные интерактивные элементы.
import { Box, Link, Text } from '@chakra-ui/react';
<Box p={4} borderWidth="1px" borderRadius="md">
<Text>
Посетите <Link href="https://chakra-ui.com" color="pink.400">официальный сайт</Link> для документации.
</Text>
</Box>
Часто необходимо использовать ссылки для маршрутизации внутри
приложения. Chakra UI позволяет интегрировать Link с
react-router-dom через as:
import { Link } from '@chakra-ui/react';
import { Link as RouterLink } from 'react-router-dom';
<Link as={RouterLink} to="/about" color="teal.500">
О странице «О нас»
</Link>
Особенности:
as позволяет заменить стандартный тег
<a> на любой компонент._hover и
_focus.Chakra UI поддерживает добавление иконок внутри ссылки для улучшения визуальной коммуникации.
import { Link, HStack } from '@chakra-ui/react';
import { ExternalLinkIcon } from '@chakra-ui/icons';
<Link href="https://chakra-ui.com" isExternal color="purple.500">
Документация
<ExternalLinkIcon mx="2px" />
</Link>
Свойства компонента Link можно делать адаптивными, используя объект или массив значений:
<Link
href="#"
color={{ base: "red.400", md: "blue.500", lg: "green.500" }}
fontSize={["sm", "md", "lg"]}
>
Адаптивная ссылка
</Link>
Можно настраивать Link через extendTheme, чтобы все ссылки имели единый стиль в проекте:
import { extendTheme } from '@chakra-ui/react';
const theme = extendTheme({
components: {
Link: {
baseStyle: {
fontWeight: "bold",
_hover: { textDecoration: "underline" },
},
variants: {
subtle: { color: "gray.500", _hover: { color: "gray.700" } },
accent: { color: "pink.400", _hover: { color: "pink.600" } },
},
},
},
});
export default theme;
variant="accent".isExternal для внешних ресурсов._focus для видимой индикации фокуса при
навигации с клавиатуры.Компонент Link в Chakra UI — гибкий инструмент для создания ссылок с учетом стилей темы, состояний взаимодействия и адаптивности. Его легко интегрировать с маршрутизаторами и другими компонентами Chakra, а система темы позволяет централизованно управлять внешним видом всех ссылок в приложении.