Компонент Link в библиотеке MUI предназначен для
создания ссылок в интерфейсе приложения с сохранением единообразного
стиля и интеграции с системой маршрутизации. Он основан на стандартном
HTML-элементе <a>, но расширяет его возможности за
счёт встроенной поддержки темы, стилей и взаимодействия с другими
компонентами библиотеки.
Импорт компонента производится из пакета
@mui/material:
import Link from '@mui/material/Link';
Простейший пример:
<Link href="https://mui.com" target="_blank" rel="noopener">
Перейти на сайт MUI
</Link>
В этом примере href задаёт URL, на который будет
происходить переход. Атрибуты target="_blank" и
rel="noopener" используются для безопасного открытия ссылки
в новой вкладке.
href – обязательное свойство для
указания адреса ссылки.
underline – управляет отображением
подчёркивания. Возможные значения:
none – без подчёркиванияhover – подчёркивание появляется при наведенииalways – всегда подчёркнутоcolor – цвет ссылки. Можно
использовать цвета темы (primary, secondary,
textPrimary и т.д.).
variant – типографический вариант,
аналогичный компоненту Typography (body1,
body2, h6 и т.п.).
target – определяет, где откроется
ссылка (_blank, _self и другие стандартные
HTML-значения).
rel – атрибут безопасности для
внешних ссылок (noopener,
noreferrer).
Пример с настройкой стиля и цвета:
<Link
href="https://mui.com"
underline="hover"
color="secondary"
variant="body2"
>
Документация MUI
</Link>
Для использования Link вместе с маршрутизатором React
Router применяется свойство component. Оно позволяет
рендерить внутренние маршруты без перезагрузки страницы:
import { Link as RouterLink } from 'react-router-dom';
<Link component={RouterLink} to="/about">
О проекте
</Link>
Здесь компонент MUI Link рендерится как
RouterLink, сохраняя стили библиотеки, но функционально
работает как маршрутизаторная ссылка.
Компонент Link полностью интегрируется с системой темы MUI. Цвет, типография и эффекты взаимодействия могут быть централизованно настроены через тему:
import { createTheme, ThemeProvider } from '@mui/material/styles';
const theme = createTheme({
components: {
MuiLink: {
styleOverrides: {
root: {
fontWeight: 500,
'&:hover': {
textDecoration: 'underline',
},
},
},
defaultProps: {
underline: 'hover',
color: 'primary',
},
},
},
});
<ThemeProvider theme={theme}>
<Link href="/contact">Контакты</Link>
</ThemeProvider>
Использование styleOverrides позволяет изменить внешний
вид всех ссылок в приложении, а defaultProps — установить
стандартные значения свойств.
Для тонкой настройки можно использовать свойство sx,
которое поддерживает полный спектр возможностей системы стилей MUI:
<Link
href="/profile"
sx={{
fontSize: '1.1rem',
color: 'green',
'&:hover': {
color: 'darkgreen',
textDecoration: 'underline',
},
}}
>
Профиль
</Link>
sx объединяет CSS-подобный синтаксис и доступ к цветам и
типографии темы.
Link наследует типографический стиль из
родителя. Для явного управления типографией рекомендуется использовать
variant.rel="noopener noreferrer" вместе с
target="_blank" во избежание уязвимостей.component для корректного взаимодействия с системой
навигации.underline и цвет можно комбинировать с
sx для достижения кастомного внешнего вида без потери
совместимости с темой.Ссылка с иконкой и кастомным стилем:
import Link from '@mui/material/Link';
import IconButton from '@mui/material/IconButton';
import GitHubIcon from '@mui/icons-material/GitHub';
<Link
href="https://github.com/mui/material-ui"
target="_blank"
rel="noopener"
sx={{
display: 'flex',
alignItems: 'center',
gap: 0.5,
color: 'text.primary',
fontWeight: 500,
'&:hover': {
color: 'primary.main',
},
}}
>
<GitHubIcon fontSize="small" />
Репозиторий на GitHub
</Link>
В этом примере демонстрируется комбинированная стилизация текста и
иконки с использованием sx, а также безопасное открытие
внешней ссылки.
Компонент Link MUI является гибким инструментом для создания ссылок любого типа — от простых текстовых до сложных элементов с иконками, интегрированных с маршрутизаторами и темой приложения. Его возможности позволяют поддерживать единообразный стиль, безопасное поведение и удобство в работе с пользовательским интерфейсом.