NextJS-de paralel routing

NextJS-de şonu ýerine ýetirmek mümkün, web sahypasynyň bölegi talap edilen URL-e baglylykda par-parý mazmuny görkezmeli. Buna paralel routing diýilýär.

Geliň mysal bilen göreli. Bizde aşakdaky web sahypa makady bolsun:

app/layout.jsxexport default function RootLayout({children}) {
  return (
    <html lang="en">
      <body>
        <header>
          header
        </header>
        <main>
          {children}
        </main>
        <footer>
          footer
        </footer>
      </body>
    </html>
  );
}

Farz edeliň, biz headerde dynamik maglumat görkezmek isleýäris. URL /users bolanda ulanyjylar komponenti, URL /posts bolanda bolsa postlar komponenti görkezilsin.

Şeýle paralel routing üçin ýörite bir papka döretmeli, onyň adyny @ belgisi bilen başlamaly. Mysal üçin bizim papkamyzy @info diýip atlandyralyň.

Bu papkanyň içine iki sany komponent ýerleşdireris. Birinjisi /users/ papkasynda ulanyjylary görkezmek üçin, ikinjisi bolsa /posts/ papkasynda postlary görkezmek üçin. Biziň faýl gurluşymyz aşakdaky ýaly bolar:

Indi biz web sahypa makadynda ýörite bir goýbermek buýrugyny ýazmaly. Bunun üçin ýörite bir dinamik slot ulanylýar.

Bu nämedigini düşünmek üçin, ilki bilen biziň web sahypa makadymyzyň funksiýa parametrine serediň:

app/layout.jsxexport default function RootLayout({children}) {
  return (
    
  );
}

Üns beriň, bize parametr hökmünde bir obýekt berlýär, biz ondan web sahypanyň mazmunyny children üýtgeýjisine çykarýarys.

Bu obýektde beýleki açarlar hem bolup biler. Olar ady @ bilen başlan papkalara gabat gelýär.

Bizim ýagdaýymyzda bizde @info papkasy bar, bu bolsa biz üçin info üýtgeýjisiniň elýeterli boljakdygyny aňladýar, URL-e baglylykda ol komponentleriň biriniň tekstini - ulanyjylary ýa-da postlary saklar. Bu üýtgeýjini alyň:

app/layout.jsxexport default function RootLayout({children, info}) {
  return (
    
  );
}

Indi makadyň HTML gurluşy içinde biz info üýtgeýjisini görkezip bileris. Bu ýere URL-e baglylykda biziň komponentleriňiziň biriniň teksti goýuljak:

app/layout.jsxexport default function RootLayout({children, info}) {
  return (
    <html lang="en">
      <body>
        <header>
          <div>
            {info}
          </div>
        </header>
        <main>
          {children}
        </main>
        <footer>
          footer
        </footer>
      </body>
    </html>
  );
}
Задание 1

Sag tarapdaky sidebar üçin dinamik slot düzüň.

Задание 2

Çep tarapdaky sidebar üçin dinamik slot düzüň.