DEV Community

Cover image for React Router v6.4 tutorial
Maria Gavrilova
Maria Gavrilova

Posted on Edited on

React Router v6.4 tutorial

конспект курса React Router in Depth
gitHub автора материалы

Концепция

  • с помощью библиотеки react-router-dom создается структура , в которой компоненты будут отображаться в зависимости от текущего URL-адреса, и управление этими компонентами будет осуществляться с помощью маршрутизации.
  • при переходе между страницами/компонентами перезагрузки страницы не происходит, также не происходит отправка запросов на сервер( только если вы сами этого не пожелаете).

Урок 1 Introduction

1) Запустим CRA npx create-react-app
2) Установим npm install react-router-dom

Получаем:

Урок 2 Basics

Этот пример для версии <v6.4 (это все еще валидный способ использования React Router)


BrowserRouter-компонент, который оборачивает всё приложение и позволяет использовать Route внутри.
Route-связывает URL с компонентами, загрузкой данных и изменением данных.
Routes(применяется для версии<v6.4!)- обертка для Route.
-Всякий раз, когда URL изменяется, Routes просматривает все свои дочерние маршруты, чтобы найти наилучшее совпадение, и отображает эту ветвь пользовательского интерфейса.
-Элементы Route могут быть вложенными, чтобы указать вложенный пользовательский интерфейс, который также соответствует вложенным путям URL.
Link-создает пути URL, как тег <a>
NavLink-это подтип Link + добавляет класс active


1) App.js

// Импортируем  требуемые компоненты из react-router-dom
import { BrowserRouter, Routes, Route, NavLink } from "react-router-dom";

// Создаем папку pages в src , а в ней 2 компонента, импортируем их...
import Home from "./pages/Home";
import About from "./pages/About";

function App() {
  return (
    // Оборачиваем все приложение в BrowserRouter
    // Внутри прописываем Route -пока они ничего не делаюет, 
    // Route просто указывают на то, что 
    // если URL изменится на path, нужно отрендарить element 
    // это можно проверить вручную, изменив URL

    //index <=> path="/" эквивалентны

    // Добавим NavLink, при нажатии на него, происходит смена URL,
    // происходит роутинг и перерисовка страницы без обновления

    <BrowserRouter>
      <header>
        <nav>
          <h1>Jobarouter</h1>
          <NavLink to="/">Home</NavLink>
          <NavLink to="about">About</NavLink>
        </nav>
      </header>
      <main>
        <Routes>
          <Route index element={<Home />} />
          <Route path="about" element={<About />} />
        </Routes>
      </main>
    </BrowserRouter>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

Получаем:

Урок 3 Router Provider, createBrowserRouter & Outlet

Этот и последующие уроки разбирают новые фитчи, которые появились в версии >v6.4

Переделаем наше приложение:

Теперь вместо BrowserRouter мы будем хранить логику наших роутев в const router и передавать router как пропс в <RouterProvider router={router} />

1) App.js

//импортируем новые зависимости, а ненужные удаляем 
import {   
  createBrowserRouter,
  createRoutesFromElements,
  Route,
  RouterProvider} from "react-router-dom";

import Home from "./pages/Home";
import About from "./pages/About";

function App() {
  return (
// вместо <BrowserRouter> ... </BrowserRouter> используем <RouterProvider router={router} />
// а все, что было внутри BrowserRouter переносим в const router

 <RouterProvider router={router} />
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

Top comments (0)