Как правильно настроить многоуровневый роутинг через react-router-dom v.5?

Настройка многоуровневого роутинга в React с использованием react-router-dom v.5 включает в себя несколько шагов. Рассмотрим каждый из них подробно.

1. Установка необходимых пакетов:
Начнем с установки react-router-dom v.5 путем выполнения команды:

   npm install react-router-dom

Эта команда установит последнюю версию react-router-dom и все его зависимости.

2. Создание базовой структуры приложения:
Создайте файлы для базовой структуры вашего приложения, такие как App.js и index.js. В файле index.js подключите React и ReactDOM, а также создайте элемент-корневой узел для вашего приложения. В файле App.js создайте компонент App, который будет являться корневым компонентом вашего приложения.

3. Создание компонентов страниц:
В вашем приложении создайте компоненты, которые будут представлять каждую из страниц вашего многоуровневого роутинга. Например, если у вас есть страницы "Главная", "О нас" и "Контакты", создайте компоненты Home, About и Contact соответственно.

4. Настройка роутера:
В файле App.js импортируйте необходимые компоненты из react-router-dom, такие как BrowserRouter, Route и Switch. Оберните ваш компонент App в BrowserRouter и определите маршрутизацию с использованием компонента Switch. Внутри Switch определите маршруты с использованием компонента Route. Каждый маршрут будет иметь свой уникальный путь и указывать на соответствующий компонент страницы. Например:

   import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
   import Home from './Home';
   import About from './About';
   import Contact from './Contact';

   function App() {
     return (
       <Router>
         <Switch>
           <Route exact path="/" component={Home} />
           <Route path="/about" component={About} />
           <Route path="/contact" component={Contact} />
         </Switch>
       </Router>
     );
   }

   export default App;

В данном примере маршруты "/about" и "/contact" имеют префикс "/" из-за использования exact, который сигнализирует о точном совпадении маршрута, а не о его начале.

5. Навигация между страницами:
Чтобы пользователи могли переходить между страницами, используйте компоненты Link, которые предоставляет react-router-dom. Компонент Link позволяет создавать ссылки с учетом текущего URL-адреса и управлять переходами без полной перезагрузки страницы. Например:

   import { Link } from 'react-router-dom';

   function Navigation() {
     return (
       <nav>
         <ul>
           <li>
             <Link to="/">Главная</Link>
           </li>
           <li>
             <Link to="/about">О нас</Link>
           </li>
           <li>
             <Link to="/contact">Контакты</Link>
           </li>
         </ul>
       </nav>
     );
   }

Компонент Link автоматически добавляет активный класс к активному маршруту, что позволяет стилизовать текущую страницу.

6. Обработка параметров маршрута:
В случае, если вам необходимо передать параметры в маршрут, вы можете использовать параметризованные маршруты с использованием двоеточия. Например, если у вас есть маршрут "/user/:id" и вам нужно получить id пользователя, вы можете использовать объект match, который передается в компонент страницы. Например:

   import React from 'react';
   import { useParams } from 'react-router-dom';

   function User() {
     let { id } = useParams();

     return <h1>Пользователь с id {id}</h1>;
   }

   export default User;

Здесь useParams хука позволяет получить параметры из URL-адреса.

Это основные шаги для настройки многоуровневого роутинга через react-router-dom v.5. Этот подход позволяет легко создавать неограниченное количество уровней роутинга в вашем приложении и обеспечивает гибкость в определении маршрутов и переходов между страницами.