Для работы с React Router необходимо установить пакет
react-router-dom через npm или yarn:
npm install react-router-dom
или
yarn add react-router-dom
После установки подключение осуществляется через стандартный импорт:
import { BrowserRouter, Routes, Route } from 'react-router-dom';
BrowserRouter создаёт контекст маршрутизации для всего
приложения, позволяя использовать маршруты через компонент
Routes, внутри которого объявляются отдельные
Route.
Компонент Routes служит контейнером для всех
маршрутов:
} />
} />
} />
:id).Динамические сегменты маршрута позволяют получать параметры через хук
useParams:
import { useParams } from 'react-router-dom';
function UserProfile() {
const { id } = useParams();
return Профиль пользователя с ID: {id};
}
Для навигации используются компоненты Link и
NavLink:
import { Link, NavLink } from 'react-router-dom';
О нас
isActive ? "active-link" : ""}>
Пользователи
Link – базовая навигация без перезагрузки
страницы.NavLink – расширение Link с поддержкой
выделения активного маршрута через свойство isActive.Программная навигация выполняется через хук
useNavigate:
import { useNavigate } from 'react-router-dom';
function RedirectButton() {
const navigate = useNavigate();
const goToHome = () => navigate('/');
return ;
}
React Router поддерживает вложенные маршруты, что позволяет строить сложные интерфейсы с общей структурой:
}>
} />
} />
} />
} />
Компонент Layout должен содержать
, куда будут рендериться вложенные
маршруты:
import { Outlet } from 'react-router-dom';
function Layout() {
return (
Заголовок
);
}
Для отладки маршрутов в приложении с React Router DevTools предоставляет следующие возможности:
:id) без добавления
console.log.useNavigate и
вложенных маршрутов.Для интеграции с DevTools достаточно установить расширение браузера
React Developer Tools. Компоненты маршрутизации
автоматически отображаются как часть дерева React, а вложенные
Route и Outlet можно исследовать через
интерфейс инспектора компонентов.
При работе с параметрами важно понимать, что useParams
возвращает значения в виде строк. Для числовых идентификаторов требуется
явное преобразование:
const { id } = useParams();
const numericId = parseInt(id, 10);
DevTools позволяет проверять, правильно ли передаются параметры, без необходимости добавлять временный вывод в код.
React Router поддерживает управление query-параметрами через хук
useSearchParams:
import { useSearchParams } from 'react-router-dom';
function SearchPage() {
const [searchParams, setSearchParams] = useSearchParams();
const query = searchParams.get('q') || '';
return (
setSearchParams({ q: e.target.value })}
/>
);
}
DevTools позволяет наблюдать за изменениями query-параметров и их влиянием на рендеринг компонентов.
Для анализа редиректов используется компонент
:
import { Navigate } from 'react-router-dom';
function ProtectedRoute({ isAuthenticated, children }) {
if (!isAuthenticated) return ;
return children;
}
replace предотвращает добавление лишнего состояния в
историю браузера.React Router в сочетании с DevTools позволяет выявлять узкие места:
React.memo и
useMemo.Outlet от контекста
маршрута.Это особенно важно для больших приложений с вложенной маршрутизацией, где каждый переход может инициировать перерендер множества компонентов.