[Next.js] Pattern & Head

2022. 7. 2. 15:33·Next.js/이론
반응형

Next.js에서 _app.js는 global로 import 할 것들이 많고 Google Analytics 등 스크립트를 사용하는 경우가 많다. 

그렇기 때문에 React 컴포넌트까지 _app.js에 모두 작성하게 되면 너무 커지게 된다. 

 

즉, Next.js는 _app.js를 필요 이상으로 크게 만드는 것을 좋아하지 않는다. 

 

그렇기 때문에 React 컴포넌트 부분을 따로 Layout으로 빼는 것을 Layout Pattern이라고 한다. 

 

Layout Pattern 

앞서 말한 것처럼 React 컴포넌트를 분리해서 사용하기 위한 패턴이다. 

import NavBar from "../components/NavBar";
import "../styles/globals.css";

export default function App({ Component, pageProps }) {
  return (
    <>
      <NavBar />
      <Component {...pageProps} />
    </>
  );
}

NavBar 같은 부분을 말한다. 

 

이것을 따로 Layout으로 분리시켜서 _app.js에 적용한다. 

import NavBar from "./NavBar";

export default function Layout({ children }) {
  <>
    <NavBar />
    <div>{children}</div>
  </>;
}

Layout 컴포넌트를 만들어서 안에 NavBar를 넣어주고 children을 같이 출력해주었다. 

 

import Layout from "../components/Layout";
import "../styles/globals.css";

export default function App({ Component, pageProps }) {
  return (
    <Layout>
      <Component {...pageProps} />
    </Layout>
  );
}

그 후 _app.js에서 NavBar를 지우고 Layout을 호출하였다. 

이렇게 작업하면 후에 NavBar 말고 하단 정보나, 배너 같이 모든 페이지에 사용되는 부분 역시 Layout에 추가를 해서 

_app.js를 줄여준다. 

 

Head 

React에서 Head를 변경하기 위해서는 Helmet 같은 외부 패키지를 사용해서 변경해야 했다. 

하지만, Next.js는 기능을 제공해주고 있다. 

import Head from "next/head";

export default function Seo({ title }) {
  return (
    <Head>
      <title>{title}</title>
    </Head>
  );
}

next/head에서 제공하는 기능을 사용하면 title, og_img, meta 등 태그를 안에 넣어서 SEO를 관리할 수 있다. 

 

import Seo from "../components/Head";
import NavBar from "../components/NavBar";

const Home = () => {
  return (
    <div>
      <Seo title="Home | Next" />
      <h1>Home</h1>
    </div>
  );
};

export default Home;

작성한 SEO 컴포넌트를 필요한 곳에 사용하면 간단하게 페이지별 title을 변경할 수 있다. 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

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

[Next.js] Server Side Rendering  (1) 2022.07.04
[Next.js] Redirect & Rewrite  (1) 2022.07.03
[Next.js] Custom App  (1) 2022.07.01
[Next.js] Styles JSX  (2) 2022.06.30
[Next.js] CSS 모듈  (1) 2022.06.29
'Next.js/이론' 카테고리의 다른 글
  • [Next.js] Server Side Rendering
  • [Next.js] Redirect & Rewrite
  • [Next.js] Custom App
  • [Next.js] Styles JSX
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    next.js
    CSS
    typescript
    Babel
    다이소
    네이버 부스트캠프
    리얼클래스
    식물
    Node.js
    알고리즘
    자바스크립트
    리얼학습일기
    react
    바질 키우기
    CCNA
    리액트
    프로그래머스
    바질
    javascript
    덤프
    redux
    Docker
    네트워크
    ReactNative
    webpack
    타입스크립트
    ChatGPT
    영어회화
    영어독학
    타일러영어
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[Next.js] Pattern & Head
상단으로

티스토리툴바