Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
react_router_-_biblioteka_marshrutizaciji_dlja_react [2024/04/02 10:09] tro |
react_router_-_biblioteka_marshrutizaciji_dlja_react [2024/04/08 06:25] (текущий) tro |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== React Router - Бібліотека маршрутизації для React ====== | ====== React Router - Бібліотека маршрутизації для React ====== | ||
| + | ===== Інсталяця ===== | ||
| + | |||
| * [[https:// | * [[https:// | ||
| * У React немає вбудованого модуля маршрутизації, | * У React немає вбудованого модуля маршрутизації, | ||
| Строка 5: | Строка 7: | ||
| npm install react-router-dom | npm install react-router-dom | ||
| </ | </ | ||
| + | ===== Первинне налаштування ===== | ||
| - | Все, що необхідно зробити, | + | 1. обернути компонентом |
| < | < | ||
| - | index.js | ||
| import { BrowserRouter } from " | import { BrowserRouter } from " | ||
| Строка 20: | Строка 22: | ||
| </ | </ | ||
| + | 2. В підлеглих компонентах використовувати **routes** і **route** | ||
| + | **Приклад: | ||
| + | < | ||
| + | // src/ | ||
| + | |||
| + | import { Routes, Route } from " | ||
| + | import Home from " | ||
| + | import About from " | ||
| + | import Products from " | ||
| + | |||
| + | export const App = () => { | ||
| + | return ( | ||
| + | <div> | ||
| + | < | ||
| + | <Route path="/" | ||
| + | <Route path="/ | ||
| + | <Route path="/ | ||
| + | </ | ||
| + | </ | ||
| + | ); | ||
| + | }; | ||
| + | |||
| + | |||
| + | </ | ||
| + | Конвенція структури файлів програми передбачає зберігання всіх компонентів у папці **src/ | ||
| + | ===== Сторінка помилки навігації ===== | ||
| + | Що буде, якщо користувач перейде за посиланням / | ||
| + | < | ||
| + | import { Routes, Route } from " | ||
| + | import Home from " | ||
| + | import About from " | ||
| + | import Products from " | ||
| + | import NotFound from " | ||
| + | |||
| + | const App = () => { | ||
| + | return ( | ||
| + | <div> | ||
| + | < | ||
| + | <Route path="/" | ||
| + | <Route path="/ | ||
| + | <Route path="/ | ||
| + | <Route path=" | ||
| + | </ | ||
| + | </ | ||
| + | ); | ||
| + | }; | ||
| + | |||
| + | |||
| + | </ | ||
| + | ===== Компоненти < | ||
| + | Для створення навігації не можна використовувати звичайний тег <a href="/ | ||
| + | Для створення посилань використовуються компоненти < | ||
| + | < | ||
| + | // src/ | ||
| + | |||
| + | import { Routes, Route, NavLink } from " | ||
| + | import clsx from ' | ||
| + | import Home from " | ||
| + | import About from " | ||
| + | import Products from " | ||
| + | import NotFound from ' | ||
| + | import css from ' | ||
| + | |||
| + | const buildLinkClass = ({ isActive }) => { | ||
| + | return clsx(css.link, | ||
| + | }; | ||
| + | |||
| + | export const App = () => { | ||
| + | return ( | ||
| + | <div> | ||
| + | <nav className={css.nav}> | ||
| + | <NavLink to="/" | ||
| + | Home | ||
| + | </ | ||
| + | <NavLink to="/ | ||
| + | About | ||
| + | </ | ||
| + | <NavLink to="/ | ||
| + | Products | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | < | ||
| + | <Route path="/" | ||
| + | <Route path="/ | ||
| + | <Route path="/ | ||
| + | <Route path=" | ||
| + | </ | ||
| + | </ | ||
| + | ); | ||
| + | }; | ||
| + | |||
| + | </ | ||
| + | ===== URL-параметри ===== | ||
| + | < | ||
| + | <Route path="/ | ||
| + | </ | ||
| + | Додамо до нашої програми маршрут сторінки одного продукту з адресою / | ||
| + | < | ||
| + | // src/ | ||
| + | |||
| + | import { Routes, Route, Link } from " | ||
| + | import Home from " | ||
| + | import About from " | ||
| + | import Products from " | ||
| + | import NotFound from " | ||
| + | import ProductDetails from " | ||
| + | |||
| + | export const App = () => { | ||
| + | return ( | ||
| + | <div> | ||
| + | <nav> | ||
| + | <Link to="/"> | ||
| + | <Link to="/ | ||
| + | <Link to="/ | ||
| + | </ | ||
| + | < | ||
| + | <Route path="/" | ||
| + | <Route path="/ | ||
| + | <Route path="/ | ||
| + | <Route path="/ | ||
| + | <Route path=" | ||
| + | </ | ||
| + | </ | ||
| + | ); | ||
| + | }; | ||
| + | |||
| + | </ | ||
| + | ===== Хук UseParams ===== | ||
| + | [[xuk_useparams|Хук useParams]] | ||
| + | ===== Вкладені маршрути ===== | ||
| + | - Вкладені маршрути дозволяють описувати логіку «підсторінок», | ||
| + | - Наприклад, | ||
| + | < | ||
| + | // ✅ Правильно | ||
| + | <Route path="/ | ||
| + | <Route path=" | ||
| + | <Route path=" | ||
| + | <Route path=" | ||
| + | </ | ||
| + | </ | ||
| + | * Ми декларативно вклали дочірні маршрути всередину батьківського < | ||
| + | * Значення пропсу path у вкладеного маршруту вказується відносно батьківського, | ||
| + | * Відносні шляхи записуються без провідного символу /, тобто path=" | ||
| + | ===== Налаштування Vercel ===== | ||
| + | [[vercel_-_dlja_publikaciji_proektu_z_gitu_v_intet_xosting|vercel - для публікації проекту з Гіту в інтет\хостинг]] | ||
| + | |||