> Какой роутер используется в React: нативный или сторонний (JavaScript)

Уровень: middle · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы

Компании: ESoft

Стек: Node.js, React, JavaScript

> Пример ответа

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

В React используется сторонний роутер - React Router. Нативного роутера в React нет, так как маршрутизация не входит в базовую функциональность библиотеки. React Router - де-факто стандарт для навигации в React-приложениях, поддерживающий browser history, динамические маршруты и вложенную маршрутизацию.

Подробное объяснение

React изначально спроектирован как библиотека для построения пользовательских интерфейсов, а не как полноценный фреймворк. Маршрутизация - это внешняя функциональность, которую сообщество реализует через сторонние решения. Основные причины:

  • Разделение ответственности: React отвечает только за рендеринг компонентов, а роутинг - отдельная задача
  • Гибкость: разработчики могут выбирать подходящий роутер под конкретные нужды (клиентский, серверный, статический)
  • Экосистема: React Router стал стандартом де-факто, но существуют альтернативы (Reach Router, Wouter, TanStack Router)

React Router предоставляет:

  • Декларативную маршрутизацию через компоненты <BrowserRouter>, <Routes>, <Route>
  • Поддержку history API для работы с URL без перезагрузки страницы
  • Вложенные маршруты и layout-компоненты
  • Параметры URL и query-строки
  • Навигационные хуки (useNavigate, useLocation, useParams)

На практике

В реальных проектах React Router используется по умолчанию для SPA. Выбор конкретной версии (v5 или v6) зависит от проекта, но v6 - актуальная. Для серверного рендеринга (Next.js, Remix) роутинг встроен в фреймворк и не требует отдельной установки React Router.

Типичные сценарии:

  • Стандартное SPA: react-router-dom с BrowserRouter
  • Микрофронтенды: react-router-dom с кастомной настройкой basename
  • Статические сайты: react-router-dom с StaticRouter для SSR

Пример кода

JSX
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Главная</Link>
<Link to="/about">О нас</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/users/:id" element={<UserProfile />} />
</Routes>
</BrowserRouter>
);
}

Как отвечать на собеседовании

Начни с прямого ответа: в React нет нативного роутера, используется сторонний - React Router. Объясни, почему это так: React - библиотека, а не фреймворк, маршрутизация вынесена в отдельный пакет. Упомяни, что для SSR-фреймворков (Next.js) роутинг встроен. Покажи понимание разницы между клиентским и серверным роутингом. Если спросят про альтернативы, назови TanStack Router как современную опцию с type-safe маршрутами.

Что проверяет интервьюер

  • Понимание архитектуры React и его места в экосистеме
  • Знание разницы между библиотекой и фреймворком
  • Практический опыт работы с React Router
  • Осведомлённость о современных альтернативах и трендах

Типичные ошибки

  • Утверждение, что React имеет встроенный роутер (это неверно)
  • Путаница между React Router и роутингом в Next.js (это разные концепции)
  • Игнорирование различий между версиями React Router (v5 vs v6)
  • Непонимание, что для SSR нужен другой подход к роутингу

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью