Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: React Router, base URL, routing, SPA, deployment

Что такое base URL в React Router и зачем он нужен?

Этот вопрос проверяет понимание базового пути (base URL) в React Router, который нужен для корректной маршрутизации в приложениях, развёрнутых не в корне домена.

Короткий ответ

Base URL (базовый путь) в React Router — это префикс, который автоматически добавляется ко всем относительным маршрутам в приложении. Он нужен, когда ваше React-приложение развёрнуто не в корне домена (например, на `example.com/my-app/`), а в поддиректории. Без указания правильного base URL маршрутизация может сломаться, так как React Router будет искать пути относительно корня сервера, а не вашей поддиректории. Вы задаёте его с помощью пропа `basename` в компоненте ``. Это обеспечивает корректную работу ссылок и навигации в продакшн-среде.

Длинный ответ

В веб-разработке, особенно при развёртывании одностраничных приложений (SPA), часто возникает ситуация, когда приложение размещается не в корневой директории домена, а внутри подпапки. Например, оно может быть доступно по адресу https://company.com/dashboard/ или https://github.com/username/project-name/ (для GitHub Pages). React Router по умолчанию предполагает, что приложение работает от корня (/). Если это не так, все относительные маршруты (например, /users или /settings) будут разрешаться относительно корня сервера, что приведёт к ошибкам 404 или некорректному отображению компонентов.

Что такое basename?

Проп basename в компоненте <BrowserRouter> (или <HashRouter>) позволяет указать базовый путь для всего приложения. Все маршруты, определённые внутри этого роутера, будут автоматически иметь этот префикс. Это влияет на:

  • Генерацию ссылок компонентом <Link to="...">.
  • Сопоставление путей в <Route path="...">.
  • Работу хуков, таких как useNavigate() и useLocation().

Как это использовать?

Вы задаёте basename при создании роутера. Вот практический пример:

import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';

function App() {
  // Приложение развёрнуто в поддиректории /admin
  return (
    <BrowserRouter basename="/admin">
      <nav>
        <Link to="/">Dashboard</Link> // Фактический путь: /admin/
        <Link to="/users">Users</Link> // Фактический путь: /admin/users
      </nav>
      <Routes>
        <Route path="/" element={<Dashboard />} />
        <Route path="/users" element={<UsersList />} />
      </Routes>
    </BrowserRouter>
  );
}

В этом примере, если пользователь перейдёт по адресу /admin/users, React Router корректно отобразит компонент UsersList, потому что он знает, что базовый путь — /admin.

Важные нюансы

  • Серверная конфигурация: Указание basename в React Router не заменяет настройку сервера. Ваш веб-сервер (Nginx, Apache) или хостинг (GitHub Pages, Netlify) также должен быть сконфигурирован так, чтобы все запросы в пределах /your-base-path перенаправлялись на ваш index.html (правило "catch-all" для SPA).
  • Абсолютные пути: Если вы используете абсолютные URL (начинающиеся с /) внутри basename, они будут автоматически дополнены. Относительные пути (без ведущего слэша) работают относительно текущего URL.
  • Хэш-роутер: Для HashRouter принцип тот же, но хэш-фрагмент (#) добавляется после базового пути.

Вывод: Используйте basename в React Router, когда ваше приложение развёртывается в поддиректории на сервере. Это необходимое условие для корректной работы маршрутизации, навигации и избежания ошибок 404 в продакшн-окружении.

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • React

    React

  • React Router

    React Router

Ключевые слова

#React Router

#base URL

#routing

#SPA

#deployment

Подпишись на React Developer в телеграм