Ծալովի դասավորություններ NextJS-ում

Ինչպես գիտեք, /app պանակում /layout.jsx ֆայլում գտնվում է կայքի հիմնական դասավորությունը:

Ցանկության դեպքում, սակայն, ներդրված պանակներում կարելի է ստեղծել սեփական դասավորություններ: Այս դեպքում էջի բովանդակությունը կտեղադրվի նախ ներդրված դասավորության մեջ, ապա ստացված արդյունքը կտեղադրվի հիմնական դասավորության մեջ:

Եկեք փորձենք գործնականում: Ենթադրենք, մեր հիմնական դասավորությունն ունի հետևյալ տեսքը:

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

Եկեք ստեղծենք մեկ այլ, ծալովի դասավորություն /users պանակի բոլոր բովանդակության համար.

app/users/layout.jsxexport default function UsersLayout({children}) {
  return (
    <div className="info">
      message for all users
    </div>
    <div className="content">
      {children}
    </div>
  );
}

Ինչպես տեսնում եք, այս դասավորությունում մենք չենք նշում էջի հիմնական թեգերը, քանի որ դրանք արդեն առկա են կայքի մեր հիմնական դասավորությունում:

Եկեք նաև ստեղծենք ֆայլ օգտագործողի ցուցադրման բովանդակության համար.

src/app/users/show/page.jsxexport default function User() {
  return <>
    <h1>User</h1>
    <p>
      user description
    </p>
  </>;
}

Այս մանիպուլյացիաներից հետո մեր ֆայլային կառուցվածքը կունենա հետևյալ տեսքը.

Այժմ, եթե դիմել համապատասխան URL-ին, NextJS-ը ամեն ինչ կհավաքի միասին և բրաուզերում մենք կստանանք հետևյալ վերջնական HTML կոդը.

html<html lang="en">
  <body>
    <header>
      header
    </header>
    <main>
      <div class="info">
        message for all users
      </div>
      
      <h1>User</h1>
      <p>
        user description
      </p>
    </main>
    <footer>
      footer
    </footer>
  </body>
</html>
Задание 1

Կայքում ստեղծեք բաժին օգտագործողների և բաժին գրառումների համար: Յուրաքանչյուր բաժնում ստեղծեք սեփական դասավորություն, որը կժառանգի կայքի հիմնական դասավորությունից: