> Какой роутер используется в 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
Пример кода
JSXimport { 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 нужен другой подход к роутингу
> Похожие задачи по JavaScript
Можно ли вызвать монтирование или размонтирование компонента с помощью key в React
Можно ли использовать key вне рендеринга списков в React
Почему нужно соблюдать порядок вызова хуков в React?
Для чего используется хук useCallback в React
> Похожие задачи по frontend
Зачем нужен React.Fragment
Можно ли использовать key вне рендеринга списков в React
Что происходит после создания work tree и current tree в React
Как добавить обработчик события на DOM-элемент в React?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью