Next.js์๋ _document, _app ๋๊ฐ์ ๊ธฐ๋ณธ ํ์ด์ง๊ฐ ์๋ค
_app, _document๋ ํ๋ก์ ํธ์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ ๋์ด์ผํ ๋ด์ฉ๋ค์ ์์ฑํด์ผํ๋ค.
App
App ์ปดํฌ๋ํธ๋ ์ฑ์ด ์์ํ ๋ ๊ฐ์ฅ ๋จผ์ ํธ์ถ๋๋ ์ปดํฌ๋ํธ์ด๋ค.
ํ๋ก์ ํธ์ ๊ธ๋ก๋ฒ ์์ ๋ค์ ์ํํ๊ธฐ์ ์ ํฉํ ์ปดํฌ๋ํธ์ด๋ค
์์
- ํ์ด์ง ๋ณ๊ฒฝ ์์๋ ๋ ์ด์์๊ณผ ์ํ๊ฐ์ ์ ์ง
- componentDidCatch๋ฅผ ํตํ ์๋ฌ ํธ๋ค๋ง
- ํ์ด์ง์ ์ถ๊ฐ ๋ฐ์ดํฐ ์ฝ์
- Global CSS ์ถ๊ฐ
- Header, Footer์ ๊ฐ์ ๊ณตํต ๋ ์ด์์ ์ถ๊ฐ
const App = ({ Component, pageProps }) => {
return (
<Layout>
<Component {...pageProps} />
</Layout>
);
};
export default App;
๊ธฐ๋ณธ์ ์ธ _app ์ปดํฌ๋ํธ์ ๊ตฌ์กฐ์ด๋ฉฐ props๋ก Component์ pageProps๋ฅผ ๋ฐ๋๋ค
Component
Component๋ ํ์ฌ ํ์ด์ง๋ฅผ ์๋ฏธํ๋ฉฐ ํ์ด์ง๊ฐ ๋ณ๊ฒฝ๋๋ฉด Component๊ฐ ๋ณ๊ฒฝ๋๋ค
pageProps
pageProps๋ getInitialProps, getStaticProps, getServerProps์ค ํ๋๋ฅผ ํตํด ๊ฐ์ ธ์จ ์ด๊ธฐ ์์ฑ๊ฐ์ ์๋ฏธํ๋ค
// index.tsx
export async function getStaticProps() {
const path = 'Home';
return {
props: {
path,
},
};
}
// _app.tsx
const App = ({ Component, pageProps }) => {
console.log(pageProps); // {path: 'Home'}
return (
<Layout>
<Component {...pageProps} />
</Layout>
);
};
์ ์ฒ๋ผ getStaticProps๋ฅผ ์ฌ์ฉํ๋ค๋ฉด _app.tsx์ pageProps์ ํด๋น ๊ฐ์ด ๋ด๊ธด๋ค
_document
๋ชจ๋ ํ์ด์ง์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ html, meta, body ํ๊ทธ ์์ ๋ค์ด๊ฐ ๋ด์ฉ์ ์ปค์คํ ํ ๋ ์ฌ์ฉํ๋ค
- Document๋ ์๋ฒ์์๋ง ๋ ๋๋ง ๋๋ค
- onClick๊ณผ ๊ฐ์ ์ด๋ฒคํธ๋ ์คํ์ผ, application ๋ก์ง ๋ฑ์ ๋ฃ์ผ๋ฉด ์ ๋๋ค
- title๊ณผ ๊ฐ์ด ๊ฐ ํ์ด์ง๋ณ๋ก ๋ณ๊ฒฝ์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒ๋ค์ ๊ฐ ํ์ด์ง์ ๋ฃ์ด์ผ ํ๋ค
์ ๋ฆฌ
์ ๋ฆฌํ์๋ฉด ๋ชจ๋ ํ์ด์ง๋ _app, _document๊ฐ ์คํ ๋ ์ดํ์ ์คํ๋๋ค
_app์ด ์คํ๋ ์ดํ์ _document๊ฐ ์คํ๋๋ค
_app์ ์ดํ๋ฆฌ์ผ์ด์ ๋ก์ง, ๊ธ๋ก๋ฒ ์คํ์ผ ๋ฑ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ฌํญ๋ค์ ๋ค๋ฃฌ๋ค.
_document๋ ์ ์ ์ธ ์ฌํญ๋ค์ ๋ํด ๊ณตํต์ ์ธ ๋ถ๋ถ์ ๋ค๋ฃฌ๋ค
Reperence
'Next' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Next.js Image ์์๋ณด๊ธฐ (0) | 2022.09.18 |
---|---|
Next.js์ Pre-rendering (1) | 2022.09.11 |
Next.js ์์๋ณด๊ธฐ (1) | 2022.08.31 |