Skip to content

06. React Router v6

This content is not available in your language yet.

React Router v6

React Router umożliwia nawigację między widokami w aplikacji SPA bez przeładowywania strony. Wersja 6 przyniosła nowe API: Routes/Route, useNavigate, zagnieżdżone trasy. Kluczowe dla każdej aplikacji z wieloma stronami.

  1. Czym jest routing w SPA? — Zmiana widoku w przeglądarce bez reload, URL aktualizowany przez JS
  2. BrowserRouter vs HashRouter? — BrowserRouter używa History API (wymaga serwera), Hash używa #
  3. Jak działa useParams? — Dostęp do parametrów trasy (/user/:id{ id: '42' })
  4. useNavigate vs <Link>? — Programatyczna vs deklaratywna nawigacja
  1. Instalacja i konfiguracjanpm install react-router-dom, owinięcie BrowserRouter
  2. Routes i Route — definiowanie tras, element prop
  3. Link i NavLink — nawigacja deklaratywna, active class
  4. useParams — dynamiczne parametry trasy (/product/:id)
  5. useNavigate — programatyczna nawigacja (po submit formularza)

Schemat

Drzewo tras aplikacji: / (strona główna), /products (lista), /products/:id (szczegóły), /cart (koszyk), * (404). Pokaż jak URL mapuje się na komponent.

Przykład kodu JSX

Pełna konfiguracja routera dla mini sklepu z listą produktów i stroną szczegółów produktu.

  • BrowserRouter, Routes, Route, Link
  • Przykład: 3-stronicowa aplikacja
  • Schemat struktury tras

Forma: 10 slajdów, 10 minut

Ocena: 3.0
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/">Strona główna</Link>
<Link to="/products">Produkty</Link>
<Link to="/cart">Koszyk</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/products" element={<ProductList />} />
<Route path="/products/:id" element={<ProductDetail />} />
<Route path="/cart" element={<Cart />} />
<Route path="*" element={<NotFound />} />
</Routes>
</BrowserRouter>
);
}
import { useParams, useNavigate } from 'react-router-dom';
function ProductDetail() {
const { id } = useParams(); // Pobiera :id z URL
const navigate = useNavigate();
const { data: product } = useFetch(`/api/products/${id}`);
const handleAddToCart = () => {
addToCart(product);
navigate('/cart'); // Programatyczne przekierowanie po akcji
};
return (
<div>
<h1>{product?.name}</h1>
<button onClick={handleAddToCart}>Dodaj do koszyka</button>
<button onClick={() => navigate(-1)}>Wróć</button>
</div>
);
}

Schemat URL → komponent

Narysujcie adres URL w pasku przeglądarki i strzałką wskażcie który komponent się renderuje. To najprościej wyjaśnia routing.

Pokaż NavLink

NavLink automatycznie dodaje klasę active do aktywnego linku. Pokażcie jak stylować aktywny element nawigacji — to coś co każdy projekt potrzebuje.

Routing to podstawa każdej SPA!

Każda aplikacja React z więcej niż jedną stroną potrzebuje React Router. Ten temat jest bezpośrednio potrzebny w projekcie semestralnym!