ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • layout패턴
    Next.js 2022. 7. 22. 22:17

    보통 component파일에 layout.js를 만들어서 다음과 같은 패턴을 사용한다.

    //(_app.js)
    import Layout from "../components/Layout";
    
    export default function App({Component, pageProps}) {
        return (
            <Layout>
                <Component {...pageProps} />
            </Layout>
        );
    }
    //(Layout.js)
    import NavBar from "./NavBar";
    
    export default function Layout({children}) {
        return (
            <>
                <NavBar></NavBar>
                <div>{children}</div>
            </>
        );
    }

    layout.js의 children prop가 _app.js의 <Component {...pageProps} />가 되는 것이다.

    즉, <Layout></Layout>안에 들어가는게 모두 {children}에 나오게 되는 것이다.

     

    그리고 Head라는걸 import해서 사용할 수 있는데

    Head는 이렇게 앱의 표지?제목?을 꾸며준다.

    index.js, about.js마다

    import Head from "next/head";
    
    export default function About() {
        return (
            <div>
                <Head>
                    <title>Home | Next Movies</title>
                </Head>
                <h3>dddd안</h3>
            </div>
        )
    }

    이렇게 import해오고 Head태그안에 title태그로 사용할 수 있겠지만, 

    component폴더에 Seo.js을 만들어서

    //(components/Seo.js)
    import Head from "next/head";
    
    export default function Seo({title}) {
        return (
            <Head>
                <title>{title} | Next Movies</title>
            </Head>
        );
    }

    title을 props로 받아올 수 있게 해주고,

    //(index.js)
    import Head from "next/head";
    import Seo from "../components/Seo";
    
    export default function Home() {
        return (
            <div>
                <Seo title="Home" />
                <h3>안녕</h3>
            </div>
        )
    }
    //(about.js)
    import Head from "next/head";
    import Seo from "../components/Seo";
    
    export default function About() {
        return (
            <div>
                <Seo title="About" />
                <h3>dddd안</h3>
            </div>
        )
    }

    이렇게 페이지마다 다르게 설정해줄 수 있다.

    'Next.js' 카테고리의 다른 글

    custom app  (0) 2022.07.22
    Styles JSX  (0) 2022.07.22
    CSS Modules  (0) 2022.07.22
    Routing  (0) 2022.07.22
    pre rendering  (0) 2022.07.22

    댓글

Designed by Tistory.