Next.JS의 레이아웃
8583 단어 nextjstutorialtypescriptwebdev
웹 사이트 개발에서 레이아웃이란 무엇입니까?
레이아웃은 페이지가 변경될 때마다 모든 페이지에 표시하고 렌더링하지 않으려는 웹 사이트의 모든 항목이 될 수 있습니다. 예를 들어 "Top Navbar", "SideBar", "Footer"등. 무엇이든 될 수 있습니다.
Next.JS의 레이아웃
Next.js를 사용하면 레이아웃을 생성 및 정의하고 모든 페이지에 대해 설정할 수 있습니다.
// components/Layout.tsx
import Sidebar from "./Sidebar";
export default function Layout({ children }: any) {
return (
<>
<div className="w-screen h-screen flex">
<div className="w-[28%] border h-full">Sidebar</div>
<main className="w-[82%] bg-[#F3F3F3] pt-6 pl-4 h-full">
{children}
</main>
</div>
</>
);
}
위의 코드는 이제 구성 요소를 래핑하는 데 사용되는 레이아웃 구성 요소입니다.
// pages/_app.tsx
import "../styles/globals.css";
import type { AppProps } from "next/app";
import Layout from "../components/Layout/Layout";
import { useRouter } from "next/router";
function MyApp({ Component, pageProps }: AppProps) {
const router = useRouter();
return (
<>
<Layout>
<Component {...pageProps} />
</Layout>
</>
);
}
export default MyApp;
위의 코드를 사용하면 구성 요소 주변의 레이아웃을 마무리할 수 있으므로 모든 페이지에서 레이아웃을 볼 수 있습니다.
그러나 이제 문제는 등록 페이지 또는 로그인 페이지 등과 같은 일부 특정 페이지에서 렌더링되는 레이아웃을 어떻게 중지할 수 있는지입니다.
레이아웃 범위 제한
레이아웃 범위를 제한하려면 레이아웃을 표시하지 않으려는 페이지를 정의해야 합니다. 그런 다음 "useRouter"및 삼항 연산자를 사용하여 범위를 설정합니다.
// pages/_app.tsx
import "../styles/globals.css";
import type { AppProps } from "next/app";
import Layout from "../components/Layout/Layout";
import { useRouter } from "next/router";
function MyApp({ Component, pageProps }: AppProps) {
const router = useRouter();
const withOutLayouts = ["/auth/signin", "/auth/register"];
return (
<>
{withOutLayouts?.includes(router.pathname) ? (
<Component {...pageProps} />
) : (
<Layout>
<Component {...pageProps} />
</Layout>
)}
</>
);
}
export default MyApp;
위의 코드에서 withOutLayouts는 레이아웃을 렌더링하지 않으려는 페이지의 경로 이름입니다.
이 기사가 마음에 드셨으면 좋겠고 프로젝트에 동일하게 적용하는 데 도움이 되었으면 합니다.
이 기사를 좋아하고 피드백을 제공하고 도움이 된다면 공유하십시오.
Reference
이 문제에 관하여(Next.JS의 레이아웃), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devmanas13/layouts-in-nextjs-59fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)