Link
и NavLink
— это специальные компоненты React Router для навигации между страницами в SPA (Single Page Application) без полной перезагрузки страницы.
Основной компонент для создания навигационных ссылок.
<Link
to="/about"
state={{ fromHome: true }} // Передача состояния
replace={false} // Заменить или добавить в историю
>
О компании
</Link>
/about
)about
)to={{ pathname: '/about' }}
)Специальная версия Link
с дополнительными возможностями для навигационных меню.
<NavLink
to="/about"
className={({ isActive }) => isActive ? 'active' : ''}
style={({ isActive }) => ({ color: isActive ? 'red' : 'blue' })}
end // Точное совпадение пути
>
О компании
</NavLink>
Подсветка активного состояния:
active
при совпадении путиclassName
или style
Функция isActive:
// Пример с функциональным className
<NavLink
to="/messages"
className={({ isActive, isPending }) =>
isPending ? "pending" : isActive ? "active" : ""
}
>
Сообщения
</NavLink>
Свойство end
:
end
ссылка считается активной только при точном совпаденииend
- при частичном совпадении (вложенные пути)Функция | Link | NavLink |
---|---|---|
Навигация без перезагрузки | ✅ | ✅ |
Поддержка state | ✅ | ✅ |
Автоматическая подсветка | ❌ | ✅ |
Кастомизация активного состояния | ❌ | ✅ |
Точное совпадение пути (end) | ❌ | ✅ |
function Navigation() {
return (
<nav>
<NavLink to="/" end>Главная</NavLink>
<NavLink to="/products">Товары</NavLink>
<NavLink to="/about">О нас</NavLink>
</nav>
);
}
<NavLink
to="/contact"
style={({ isActive }) => ({
fontWeight: isActive ? 'bold' : 'normal',
color: isActive ? '#1890ff' : '#333',
})}
>
Контакты
</NavLink>
function Breadcrumbs() {
return (
<div className="breadcrumbs">
<Link to="/">Главная</Link>
<span> / </span>
<Link to="/products">Товары</Link>
<span> / </span>
<Link to="/products/123">Товар 123</Link>
</div>
);
}
Link — базовая навигация:
<a>
для SPANavLink — "умная" ссылка:
Выбор компонента:
Общие возможности:
Для большинства навигационных задач в React-приложениях этих компонентов достаточно.