React Academy · Oppitunti

Dynaamiset reitit ja reittiryhmät

Luokaa [slug]-dynaamisia segmenttejä, (folder)-reittiryhmiä ja rinnakkaisia reittejä.

Oppitunti 3/412 vaihetta

Dynaamiset reitit ja reittiryhmät on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.

Dynaamiset segmentit

Luokaa dynaaminen segmentti ympäröimällä kansion nimi hakasulkeilla. Arvo on käytettävissä sivulle välitettävissä params-parametreissa.

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

Tyypitetyt parametrit

URL-osoitteen parametrit ovat aina merkkijonoja. Muuntakaa ne erikseen numeerisia tunnisteita varten.

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

Kaikki sisältävät segmentit

Käyttäkää [...slug]-merkintää vastaamaan mitä tahansa määrää polkusegmenttejä. Arvo on merkkijonojen taulukko.

// 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} />;
}

Valinnainen kaikki sisältävä segmentti

[[...slug]] täsmää myös juurisegmenttiin — se on hyödyllinen valinnaisissa polkuetuliitteissä.

// 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

Viekää generateStaticParams(), jotta dynaamiset reitit esirenderöidään koontiaikana ja jokaiselle parametrien yhdistelmälle tuotetaan staattinen HTML.

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

Reittiryhmät — (kansio)

Luokaa reittiryhmä ympäröimällä kansion nimi sulkeilla. Se järjestää tiedostot lisäämättä URL-osoitteeseen segmenttiä.

// 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

Jaetut layoutit reittiryhmissä

Jokaisella reittiryhmällä voi olla oma layout.tsx, jolloin eri osioille voidaan antaa erilaiset layoutit ilman URL-osoitteen sisäkkäisyyttä.

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

Rinnakkaiset reitit — @slot

Luokaa slot lisäämällä kansion nimen eteen @. Slotit renderöidään samanaikaisesti ylätason layoutissa — niitä voi käyttää esimerkiksi modaalien, jaetun näytön tai välilehtien toteuttamiseen.

// 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>
  );
}

Reittejä sieppaavat reitit — (..)

Siepatkaa reitti (..)-merkinnän avulla ja renderöikää se nykyisessä näkymässä. Voitte esimerkiksi avata valokuvan modaalissa uuden sivun navigoinnin sijaan.

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

Dynaamiset reittimetatiedot

Viekää dynaamisissa reiteissä asynkroninen generateMetadata-funktio, jotta voitte määrittää sivukohtaiset SEO-tunnisteet reittiparametrien perusteella.

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

Pikatarkistus

Mitä kansion nimen ympäröiminen sulkeilla tekee Next.js App Routerissa?

Kertaus

[id] luo dynaamisia segmenttejä, [...slug] kattaa kaikki alireitit ja [[...slug]] tekee niistä valinnaisia. Reittiryhmät, kuten (name), järjestävät koodia vaikuttamatta URL-osoitteeseen ja mahdollistavat ryhmäkohtaiset layoutit. Käyttäkää generateStaticParams-funktiota koontiaikaiseen esirenderöintiin.

Aloita maksutta

Opi React tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
88
Oppitunnit
324

Usein kysytyt kysymykset

Onko oppitunti ”Dynaamiset reitit ja reittiryhmät” ilmainen?

Kyllä – oppitunnin ”Dynaamiset reitit ja reittiryhmät” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Dynaamiset reitit ja reittiryhmät”?

Luokaa [slug]-dynaamisia segmenttejä, (folder)-reittiryhmiä ja rinnakkaisia reittejä. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Dynaamiset reitit ja reittiryhmät”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?

Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. App Routerin tiedostokäytännöt
  2. Palvelin- ja client-komponentit Next.js:ssä
  3. Dynaamiset reitit ja reittiryhmät
  4. Metadata API ja SEO App Routerissa
← Takaisin: React Academy