BrowserRouter — это основной компонент маршрутизации в
React Router, который позволяет создавать SPA (Single Page Application)
с управлением URL через History API браузера. Он оборачивает приложение
и обеспечивает контекст маршрутов для всех вложенных компонентов
Route, Link и других элементов навигации.
import { BrowserRouter } from 'react-router-dom';
import App from './App';
function Root() {
return (
);
}
Ключевой момент: BrowserRouter должен быть
корневым компонентом, оборачивающим всё приложение, иначе
маршруты внутри него не будут работать.
BrowserRouterbasename Позволяет указать базовый
путь для всех маршрутов приложения. Полезно при развертывании на
поддиректории.
В этом случае маршрут /about будет доступен как
/myapp/about.
children Компоненты, которые будут
иметь доступ к контексту маршрутов. Обычно это
или набор маршрутов.
window Позволяет использовать
нестандартный объект window, что удобно для тестирования
или рендеринга на сервере.
BrowserRouterВсе компоненты Route и Link должны
находиться внутри BrowserRouter. Пример базовой
конфигурации:
import { Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<>
} />
} />
>
);
}
Ключевые моменты:
заменяет
для SPA-навигации без перезагрузки
страницы. является контейнером для
и выполняет сопоставление URL с
компонентами.element у принимает
JSX-компонент.BrowserRouter использует HTML5 History
API (pushState, replaceState,
popstate) для изменения URL без перезагрузки страницы. Это
обеспечивает возможность:
history.back() и
history.forward(),useNavigate():import { useNavigate } from 'react-router-dom';
function LoginButton() {
const navigate = useNavigate();
const handleLogin = () => {
authenticateUser();
navigate('/dashboard'); // переход после логина
};
return ;
}
BrowserRouter позволяет создавать вложенные маршруты с
любым уровнем иерархии. Это реализуется через сочетание
и :
}>
} />
} />
}>
} />
} />
Особенности:
index указывает на маршрут по умолчанию внутри
родительского маршрута./dashboard/stats).BrowserRouter поддерживает параметры URL через синтаксис
:param. Пример:
} />
В компоненте UserProfile доступ к параметру
id осуществляется через хук useParams():
import { useParams } from 'react-router-dom';
function UserProfile() {
const { id } = useParams();
return Профиль пользователя {id};
}
useNavigate — основной инструмент для
программного перехода.navigate(to, { replace: true }) —
заменяет текущую запись в истории, вместо добавления новой.:import { Navigate } from 'react-router-dom';
function ProtectedRoute({ isAuthenticated, children }) {
return isAuthenticated ? children : ;
}
HashRouter)./about сервер должен отдавать
index.html.MemoryRouter
вместо BrowserRouter.basename при развертывании в
поддиректории. на верхнем уровне.useNavigate вместо
прямой работы с window.location.