React Router — это популярная библиотека для навигации (маршрутизации) в React-приложениях. Она позволяет создавать одностраничные приложения (SPA — Single Page Application) с динамической загрузкой контента без полной перезагрузки страницы.
Клиентская маршрутизация (Client-Side Routing):
Позволяет менять URL в браузере и отображать соответствующие компоненты без запросов к серверу.
Динамические роуты (Dynamic Routing):
Маршруты определяются "на лету" во время рендеринга приложения (в отличие от статической конфигурации).
Вложенные роуты (Nested Routes):
Поддержка иерархической структуры маршрутов, что упрощает организацию сложных интерфейсов.
import { BrowserRouter, Route, Routes, Link } from 'react-router-dom';
<BrowserRouter>
Обеспечивает синхронизацию истории браузера с React-приложением. Обычно оборачивает всё приложение.
<Routes>
и <Route>
<Routes>
— контейнер для маршрутов (аналог Switch в v5)<Route>
определяет соответствие между path и компонентом<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/about" element={<AboutPage />} />
</Routes>
<Link>
Альтернатива HTML-тегу <a>
для навигации без перезагрузки страницы:
<Link to="/about">О нас</Link>
Базовый роутинг
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Главная</Link>
<Link to="/dashboard">Дашборд</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/dashboard" element={<Dashboard />} />
</Routes>
</BrowserRouter>
);
}
Динамические параметры
Доступ к параметрам URL через хук useParams
:
// Маршрут
<Route path="/users/:id" element={<UserProfile />} />
// Компонент
function UserProfile() {
const { id } = useParams();
return <div>Профиль пользователя {id}</div>;
}
Защищённые маршруты (Protected Routes)
Реализация приватных страниц (например, для авторизованных пользователей):
function PrivateRoute({ children }) {
const isAuth = useAuth(); // Ваша логина авторизации
return isAuth ? children : <Navigate to="/login" />;
}
// Использование
<Route path="/admin" element={<PrivateRoute><AdminPanel /></PrivateRoute>} />
useNavigate
Программная навигация:
const navigate = useNavigate();
navigate('/login'); // Перенаправление
useLocation
Доступ к текущему location (объект с pathname, search, hash):
const location = useLocation();
console.log(location.pathname); // '/about'
useSearchParams
Работа с query-параметрами:
const [searchParams, setSearchParams] = useSearchParams();
const page = searchParams.get('page'); // ?page=2
<Switch>
заменён на <Routes>
component={Profile}
заменён на element={<Profile />}
useHistory
заменён на useNavigate
Для большинства React-проектов это оптимальный выбор для реализации навигации.