
Уявіть, що ви будуєте будинок. React — це цегла, бетон та інструменти для зведення стін (компонентів). Але будинок без коридорів, дверей та сходів — це просто набір ізольованих кімнат. Ви не можете потрапити з вітальні на кухню, не вийшовши з дому і не зайшовши з іншого входу.
React Router — це архітектурний план вашого будинку. Це коридори, двері, ліфти та вказівники, які з'єднують ваші кімнати-компоненти в єдиний, зручний для життя простір.
У цьому масштабному гайді ми пройдемо шлях від "Чому нам взагалі потрібен роутер?" до побудови складних навігаційних систем, які використовують Instagram або Notion.
Щоб зрозуміти цінність React Router, нам потрібно повернутися до того, як працював веб до його появи.
Традиційний веб (наприклад, старі сайти на PHP або статичні HTML-файли) працює за моделлю MPA.
Проблеми цього підходу:
React популяризував підхід SPA. Ідея проста: ми завантажуємо сайт один раз.
Але тут виникає нова проблема. Якщо ми просто змінюємо компоненти через useState (наприклад, activeTab), браузер не змінює URL.
Наслідки "навігації через State":
my-app.com другу, він відкриє головну, бо URL не змінився.Саме тут на сцену виходить React Router. Він емулює навігацію браузера, але робить це без перезавантаження сторінки.
Browser History API, щоб кнопки "Назад" і "Вперед" працювали коректно.Важливо розуміти контекст, оскільки в інтернеті ви знайдете багато застарілих туторіалів.
| Версія | Епоха | Ключова філософія | Статус |
|---|---|---|---|
| v4 / v5 | 2017-2021 | Компоненти-як-Роути. Все є компонентом (<Route>). Динамічне визначення маршрутів під час рендеру. | 🛑 Legacy |
| v6.0-v6.3 | 2021-2022 | Хуки та Конфігурація. Введення <Routes>, вкладені маршрути через <Outlet>, спрощення API. | ⚠️ Перехідна |
| v6.4+ | 2022-2024 | Data Router. Введення loader, action, RouterProvider. Роутер керує даними. | 🟡 Стабільна |
| v7 | 2024+ | Уніфікація. Об'єднання Remix та React Router. Підтримка SSR, покращена типізація, нові хуки. | ✅ Сучасний Стандарт |
createBrowserRouter. Цей API є еволюцією v6.4 і є стандартом для нових SPA проектів. Якщо ви шукаєте інформацію про старий компонентний підхід, дивіться розділ Legacy Routing.Це найважливіший концептуальний зсув для початківця.
В React ми звикли, що стан (useState, useReducer, Redux) керує відображенням.
В React Router джерелом істини стає URL.
Якщо чогось немає в URL, користувач не може це зберегти, поділитися цим або повернутися до цього.
Приклад еволюції мислення:
Рівень 1 (Новачок - State): Ми зберігаємо ID відкритого товару в змінній стану.
const [selectedProductId, setSelectedProductId] = useState(null);
// Якщо оновити сторінку, selectedProductId скинеться в null. Стан втрачено.
Рівень 2 (Профі - URL):
Ми "зберігаємо" ID товару в URL (/product/123).
// URL: /product/123
const params = useParams(); // { id: '123' }
// При оновленні сторінки React Router знову прочитає '123' з URL. Стан збережено.
У наступних розділах ми побудуємо повноцінний додаток, розбираючи кожен аспект:
<BrowserRouter> на користь сучасного createBrowserRouter (v7).<a> — це ворог, і як правильно лінкувати сторінки.useEffect для завантаження даних.Готові перетворити набір компонентів на справжній додаток? Переходьмо до налаштування.
Глибоке Занурення в Продуктивність
TanStack Query надзвичайно швидкий "з коробки". Але якщо ви рендерите тисячі елементів або маєте складні дані, варто розуміти, як він працює під капотом.
Налаштування та Базовий Роутинг
Ми починаємо нашу практичну подорож. У цьому розділі ми інтегруємо React Router у проект і налаштуємо перші маршрути.