Гид по технологиям

React Router — установка и маршрутизация

5 min read Frontend Обновлено 30 Dec 2025
React Router — установка и маршрутизация
React Router — установка и маршрутизация

Ноутбук с общей темой WordPress

Кратко

Краткое практическое руководство по установке и использованию React Router v6 для одностраничных приложений (SPA). Покрыты установка, базовые и вложенные маршруты, компоненты Link и NavLink, а также советы по отладке и деплою.


Введение

Single Page Application (SPA) — это веб-сайт или веб-приложение, которое динамически заменяет содержимое страницы без полной перезагрузки. В React-приложениях компоненты получают данные и отрисовывают их в одном HTML-файле.

React Router — библиотека для управления маршрутами (URL) внутри SPA. Она позволяет отображать нужный компонент по URL, организовывать вложенные маршруты, навигацию и работать с параметрами пути.

Определение терминов (в одну строку каждое):

  • SPA: веб-приложение, где навигация не вызывает полной перезагрузки страницы.
  • Маршрут: соответствие между URL и компонентом, который должен отобразиться.
  • Outlet: компонент, служащий «плейсхолдером» для дочерних маршрутов.

Когда использовать React Router

Важно использовать React Router, если приложение:

  • требует управления URL (закладок, прямых ссылок);
  • имеет разные экраны/страницы с уникальными адресами;
  • должен поддерживать историю браузера и ссылочную навигацию.

Не нужен React Router, если приложение — чистый виджет без адресации или если навигация реализуется вне React.

Как установить React Router

Установите пакет react-router-dom v6 (рекомендуемая стабильная ветка для большинства проектов). В корне проекта запустите одну из команд:

npm i react-router-dom

или

yarn add react-router-dom@6

Совет: фиксируйте мажорную версию в package.json, чтобы избежать несовместимости при автоматическом обновлении.

Настройка BrowserRouter

Откройте файл index.js (или index.jsx) и оберните корневой компонент в BrowserRouter, чтобы весь дерево компонентов могло пользоваться маршрутизатором:

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BrowserRouter } from 'react-router-dom';

const root = ReactDOM.createRoot(document.getElementById('root'));

root.render(
  
    
  
);

BrowserRouter использует History API браузера. Для проектов, где нужно поддерживать старые сервера или статическую доставку, рассмотрите HashRouter (использует хеш # в URL).

Простой пример маршрутов

Создадим маршруты Home, About и Blog внутри App:

import { Routes, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Blog from './Blog';

function App() {
  return (
    
      } />
      } />
      } />
    
  );
}

export default App;

Пояснения:

  • Routes — контейнер для Route.
  • Route принимает path (путь) и element (компонент для рендера).
  • Путь ‘/‘ — корневой маршрут, обычно рендерит главную страницу.

Навигация: Link и NavLink

Для навигации используйте компонент Link вместо обычной ссылки , чтобы предотвратить перезагрузку страницы:

NavLink — похож на Link, но позволяет стилизовать активную ссылку (например, добавить класс active):

Вложенные маршруты и Outlet

React Router поддерживает вложенные маршруты, когда несколько маршрутов логически принадлежат одному разделу. Для этого используют компонент Outlet в родительском компоненте.

Пример структуры:

Компонент маршрутов можно организовать так:

Обратите внимание на относительные пути дочерних маршрутов: внутри родителя путь ‘new’ соответствует ‘/article/new’. Для рендера дочерних компонентов используйте Outlet в компоненте-лейауте:

Затем в маршрутизации указывайте элемент родителя, если нужен общий компонент-обёртка:

Параметры пути и хук useParams

Чтобы объявить параметр маршрута, используйте двоеточие в пути, затем читайте его через useParams:

useParams возвращает объект со строковыми значениями параметров.

Программная навигация useNavigate

Для перехода по коду (например, после отправки формы) используйте useNavigate:

navigate поддерживает относительные переходы и замену записи истории (replace: true).

Маршруты по шаблону и «звёздочка»

Для группы маршрутов используйте символ-джокер ‘*’, чтобы матчить всё, что начинается с префикса:

Это полезно при выносe большого набора маршрутов в отдельную компоненту.

Типичные ошибки и как их исправить

Советы по отладке

Развёртывание и настройка сервера

Для SPA важно, чтобы сервер возвращал index.html для всех URL, которые обрабатывает React Router. Примеры:

Если используется BrowserRouter, серверный fallback обязателен. В качестве обходного решения для простых страниц можно использовать HashRouter, который не требует серверных правил, но портит URL (#).

Контрольный список разработчика

Критерии приёмки

Альтернативные подходы

Ментальная модель (упрощённо)

Представьте дерево компонентов как карту: Routes — это узлы маршрутов, Route — указатель на конкретное место на карте, Outlet — дверь в следующий уровень карты.

Быстрый чек для QA

Пример playbook для добавления новой группы маршрутов

  1. Создать папку и компоненты: List, Detail, New.
  2. Создать файл маршрутов ArticleRoutes.js с вложенными Route.
  3. Добавить } /> в App.
  4. Добавить Outlet и тесты навигации.
  5. Проверить перезагрузку страницы и работу Back/Forward.

Модель риска и смягчение


Итог

React Router — гибкий инструмент для маршрутизации в React SPA. Правильная установка BrowserRouter, грамотная организация Routes/Route и использование Link/NavLink, Outlet, useParams и useNavigate позволяют создать предсказуемую навигацию. Не забывайте про серверную конфигурацию при использовании BrowserRouter.

Автор
Редакция

Похожие материалы

React use() — упрощение загрузки данных
React

React use() — упрощение загрузки данных

Генератор QR‑кодов в React
React

Генератор QR‑кодов в React

Calibre и Kindle: настройка и отправка книг
Инструменты

Calibre и Kindle: настройка и отправка книг

Режим «картинка в картинке» в Firefox
браузер

Режим «картинка в картинке» в Firefox

FTP в Проводнике Windows — настройка и советы
Инструменты

FTP в Проводнике Windows — настройка и советы

Как брать электронные книги в библиотеке
Библиотеки

Как брать электронные книги в библиотеке