Компонент Link из библиотеки
MUI (Material-UI) предназначен для создания ссылок,
поддерживающих как стандартное HTML-поведение <a>,
так и интеграцию с современными библиотеками маршрутизации, такими как
React Router или Next.js. Он
обеспечивает согласованное оформление ссылок в рамках Material Design и
позволяет управлять стилями, цветами и поведением навигации.
Базовое использование:
import Link from '@mui/material/Link';
<Link href="https://mui.com" target="_blank" rel="noopener">
Перейти на сайт MUI
</Link>
Здесь href указывает адрес перехода,
target="_blank" открывает ссылку в новой вкладке, а
rel="noopener" предотвращает потенциальные уязвимости при
открытии внешних ссылок.
href — адрес перехода (обязательный
для внешних ссылок).underline — управление подчеркиванием:
'none' | 'hover' | 'always'. Значение 'hover'
по умолчанию.color — цвет текста, поддерживаются
стандартные значения MUI ('primary',
'secondary', 'inherit',
'textPrimary', 'textSecondary').variant — типографический стиль
текста, наследуемый от компонента Typography.component — позволяет заменить
рендеринг на другой элемент, например, <RouterLink>
для интеграции с React Router.Пример использования underline и color:
<Link href="/about" underline="none" color="secondary">
О компании
</Link>
Для SPA (Single Page Application) важно использовать навигацию без
полной перезагрузки страницы. Компонент Link MUI легко
комбинируется с React Router через свойство
component.
import { Link as RouterLink } from 'react-router-dom';
import Link from '@mui/material/Link';
<Link component={RouterLink} to="/dashboard">
Панель управления
</Link>
Здесь происходит замена базового <a> на
<RouterLink>, сохраняя стили и поведение MUI. Это
позволяет использовать преимущества маршрутизации React
Router, включая history и управление переходами
без перезагрузки.
Для проектов на Next.js тоже возможна интеграция
через компонент Link от MUI с использованием
next/link:
import NextLink from 'next/link';
import Link from '@mui/material/Link';
<Link component={NextLink} href="/blog">
Блог
</Link>
Важно помнить, что начиная с Next.js 13, next/link
поддерживает обертку без дочернего элемента <a> и
совместима с MUI Link.
MUI позволяет полностью управлять стилями компонента
Link. Возможны как встроенные пропсы, так и
sx-параметр или styled API для более
гибкой кастомизации:
<Link
href="#"
underline="hover"
sx={{
fontWeight: 'bold',
fontSize: 18,
'&:hover': {
color: 'primary.main',
},
}}
>
Кастомная ссылка
</Link>
Использование sx позволяет комбинировать стандартные
возможности темы MUI с кастомными стилями, поддерживая единый визуальный
язык всего приложения.
Tab и Enter.aria-label для улучшенной доступности.target="_blank" и
rel="noopener noreferrer".Пример с accessibility:
<Link href="https://example.com" target="_blank" rel="noopener noreferrer" aria-label="Перейти на Example">
Example
</Link>
Часто ссылки отображаются внутри текста, где требуется согласованный
типографический стиль. MUI позволяет объединять Link с
Typography:
import Typography from '@mui/material/Typography';
<Typography variant="body1">
Подробнее о <Link href="/features">функциях</Link> продукта.
</Typography>
Ссылка наследует стиль body1, сохраняя визуальную
целостность текста.
import AppBar from '@mui/material/AppBar';
import Toolbar from '@mui/material/Toolbar';
import Link from '@mui/material/Link';
import { Link as RouterLink } from 'react-router-dom';
<AppBar position="static">
<Toolbar>
<Link component={RouterLink} to="/" color="inherit" underline="none" sx={{ mr: 3 }}>
Главная
</Link>
<Link component={RouterLink} to="/about" color="inherit" underline="none" sx={{ mr: 3 }}>
О нас
</Link>
<Link component={RouterLink} to="/contact" color="inherit" underline="none">
Контакты
</Link>
</Toolbar>
</AppBar>
В этом примере создается горизонтальная навигационная панель, где все ссылки интегрированы с React Router, сохраняют стили MUI и обеспечивают плавную навигацию без перезагрузки страницы.
Компонент Link в MUI — это гибкий инструмент для
навигации, который сочетает визуальное единообразие Material
Design, совместимость с различными фреймворками маршрутизации и
возможности полной кастомизации через систему темы и sx.
Его правильное использование обеспечивает удобство пользователя,
доступность и удобное управление стилями.