0Pricing
React Academy · Lekcja

Dynamiczne trasy i grupy tras

Tworzenie dynamicznych segmentów [slug], grup tras z (folder) oraz tras równoległych.

Dynamiczne trasy i grupy tras to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Segmenty dynamiczne

Umieść nazwę folderu w nawiasach kwadratowych, aby utworzyć segment dynamiczny. Wartość jest dostępna w obiekcie params przekazywanym do strony.

// app/products/[id]/page.tsx
export default function ProductPage({ params }: { params: { id: string } }) {
  return <h1>Product {params.id}</h1>;
}
// → /products/123 → params.id = '123'

Typowane parametry

Parametry w adresie URL są zawsze ciągami znaków. W przypadku identyfikatorów liczbowych należy jawnie je przekonwertować.

export default async function PostPage({ params }: { params: { slug: string } }) {
  const post = await getPostBySlug(params.slug);
  if (!post) notFound();
  return <article>{post.content}</article>;
}

Segmenty przechwytujące wszystkie ścieżki

Użyj [...slug], aby dopasować dowolną liczbę segmentów ścieżki. Wartość jest tablicą ciągów znaków.

// app/docs/[...path]/page.tsx
export default function DocsPage({ params }: { params: { path: string[] } }) {
  // /docs/react/hooks → params.path = ['react', 'hooks']
  return <DocViewer path={params.path} />;
}

Opcjonalne przechwytywanie wszystkich ścieżek

[[...slug]] dopasowuje również segment główny — jest przydatne w przypadku opcjonalnych prefiksów ścieżki.

// app/[[...lang]]/page.tsx
// Matches /, /en, /en/about, /fr/products/123
export default function Page({ params }: { params: { lang?: string[] } }) {
  const lang = params.lang?.[0] ?? 'en';
  return <div lang={lang}>...</div>;
}

generateStaticParams

Eksportuj generateStaticParams(), aby wstępnie renderować dynamiczne trasy podczas budowania i wygenerować statyczny HTML dla każdej kombinacji parametrów.

export async function generateStaticParams() {
  const posts = await getPosts();
  return posts.map(p => ({ slug: p.slug }));
}
// → builds /blog/hello-world, /blog/react-tips etc. statically

Grupy tras — (folder)

Umieść nazwę folderu w nawiasach, aby utworzyć grupę tras. Porządkuje ona pliki bez dodawania segmentu do adresu URL.

// File structure:
// app/(marketing)/about/page.tsx → /about
// app/(marketing)/blog/page.tsx  → /blog
// app/(app)/dashboard/page.tsx   → /dashboard
// (marketing) and (app) don't appear in URLs

Grupy tras ze współdzielonymi layoutami

Każda grupa tras może mieć własny plik layout.tsx, co pozwala nadać różne layouty poszczególnym sekcjom bez zagnieżdżania ich w adresie URL.

// app/(marketing)/layout.tsx — marketing shell
// app/(app)/layout.tsx — authenticated app shell
// Both groups share app/layout.tsx as the root

Trasy równoległe — @slot

Dodaj prefiks @ do nazwy folderu, aby utworzyć slot. Sloty renderują się jednocześnie w nadrzędnym layoucie — jest to przydatne w przypadku modali, podziału ekranu lub kart.

// app/@modal/login/page.tsx
// app/layout.tsx
export default function RootLayout({ children, modal }) {
  return (
    <div>
      {children}
      {modal} {/* renders @modal/login/page.tsx side by side */}
    </div>
  );
}

Trasy przechwytujące — (..)

Użyj notacji (..), aby przechwycić trasę i wyrenderować ją w bieżącym widoku (np. otworzyć zdjęcie w modalu zamiast przechodzić do nowej strony).

// Soft navigation shows modal:
// app/@modal/(..)/photos/[id]/page.tsx
// Hard navigation shows full page:
// app/photos/[id]/page.tsx

Dynamiczne metadane trasy

Eksportuj asynchroniczną funkcję generateMetadata w dynamicznych trasach, aby ustawiać tagi SEO dla poszczególnych stron na podstawie parametrów trasy.

export async function generateMetadata({ params }: { params: { id: string } }) {
  const product = await getProduct(params.id);
  return { title: product.name, description: product.description };
}

Szybkie sprawdzenie

Co powoduje ujęcie nazwy folderu w nawiasy w App Routerze Next.js?

Podsumowanie

[id] tworzy segmenty dynamiczne, [...slug] przechwytuje wszystkie podścieżki, a [[...slug]] sprawia, że są one opcjonalne. Grupy tras z użyciem (name) porządkują kod bez wpływu na adres URL i umożliwiają definiowanie layoutów dla poszczególnych grup. Używaj generateStaticParams do wstępnego renderowania podczas budowania.

Często zadawane pytania

Czy lekcja „Dynamiczne trasy i grupy tras” jest bezpłatna?

Tak — pełny tekst „Dynamiczne trasy i grupy tras” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Dynamiczne trasy i grupy tras”?

Tworzenie dynamicznych segmentów [slug], grup tras z (folder) oraz tras równoległych. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Dynamiczne trasy i grupy tras”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konwencje plików App Router
  2. Komponenty serwerowe a klienckie w Next.js
  3. Dynamiczne trasy i grupy tras
  4. Metadata API i SEO w App Router
← Powrót do React Academy