
React ๋ก ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ๋, ์ปดํฌ๋ํธ ํ๋ํ๋ ๋ง๋๋ ๊ฒ๋ ์ค์ํ์ง๋ง
๋ ์ค์ํ ๊ฑด ํ๋ฉด์ ๋ผ๋, ์ฆ ๋ ์ด์์๊ณผ ์ ์ญ ์คํ์ผ์ ์ ์ค๊ณํ๋ ๊ฒ์ด๋ค.
์ค๋์ ๋ ์ด์์์ ํ์์ฑ๊ณผ ํจ๊ป, ๊ธ๋ก๋ฒ ์คํ์ผ,
๊ทธ๋ฆฌ๊ณ Styled-Components๋ฅผ ํ์ฉํ ์คํ์ผ ๊ด๋ฆฌ๊น์ง ์ ๋ฆฌํ๋ค.
๋ ์ด์์์ ๋จ์ํ UI๋ฅผ ๋ณด๊ธฐ ์ข๊ฒ ๋๋๊ธฐ ์ํ ๊ฒ๋ง์ด ์๋๋ค.
๊ทธ ์ด์์ผ๋ก ์ค์ํ ์ญํ ๋ค์ ๋งก๋๋ค.
// Layout.tsx
const Layout = ({ children }: { children: React.ReactNode }) => {
return (
<>
<Header />
<main>{children}</main>
<Footer />
</>
);
};
children์๋ ๋ค์ํ ํ์
์ React ์์๊ฐ ๋ค์ด๊ฐ ์ ์์ด์ ์ ํํ ํ์
์ ์๋ ๊ฒ ์ค์ํ๋ค.
interface LayoutProps {
children: React.ReactNode;
}
React ํ๋ก์ ํธ์์๋ ์ ์ญ ์คํ์ผ(Global Style)์ ๋ฐ๋ก ๊ด๋ฆฌํ๋ ๊ฒ ์ข๋ค.
์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค:
์ ํต์ ์ผ๋ก๋ CSS ์ด๊ธฐํ ๋ฐฉ์์ด ์๋ ์ธ ๊ฐ์ง๊ฐ ๋ํ์ ์ด๋ค:
์ ํต์ ์ธ CSS ๋ฐฉ์์ ํ๋ก์ ํธ๊ฐ ์ปค์ง์๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค:
๊ทธ๋์ ๋์จ ๋ฐฉ์์ด CSS-in-JS๋ค. ๊ทธ์ค ๋ํ์ ์ธ ๊ฒ์ด styled-components.
npm install styled-components
npm install --save-dev @types/styled-components
import styled, { createGlobalStyle } from 'styled-components';
export const GlobalStyle = createGlobalStyle`
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Pretendard', sans-serif;
background-color: #121212;
color: white;
}
`;
์ ์ญ ์คํ์ผ์ ํ ๋ฒ๋ง ์ค์ ํ๋ฉด, ์ด๋ค ํ์ด์ง๋ ์ผ๊ด๋ ์คํ์ผ์ ์ ์งํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ปดํฌ๋ํธ ๋จ์๋ก ์คํ์ผ์ ๋ถ๋ฆฌํด ์บก์ํํ ์ ์๋ค:
const StyledButton = styled.button`
background-color: #5c6bc0;
color: white;
padding: 10px 20px;
border-radius: 8px;
border: none;
`;
children์ ํ์
์ ReactNode๋ฅผ ์ฃผ๋ก ์ด๋ค.