์์์ ํน์ ํ ๋ถ๋ถ์ CSS ์์ฑ์ ์ ์ฉํ ์ ์๋๋ก ์ ํ์์ ์ถ๊ฐํ๋ ํค์๋์ ๋๋ค.์์์ CSS ์์ฑ์ ์ ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ํ CSS ์์ฑ์ ์ ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋์ ํ์ ์์์ฒ๋ผ ์ฌ์ฉํ ์ ์์ด์ ๊ฐ์ ์์๋ผ๊ณ ํฉ๋๋ค.::before: ์์ ๋ด์ฉ
์ค๋์ Promise์ ๋ํด์ ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณด๋ ค๊ณ ํฉ๋๋ค.์์ฆ ๋ค์ด์ ๊ธฐ๋ณธ ๊ฐ๋ ์ด ๋งค์ฐ๋งค์ฐ ๋ถ์กฑํ๋ค๋ ์๊ฐ์ ํ๊ณ ์์ต๋๋ค.. ๐คฆโโ๏ธ์ฌ์ค Promise์ ๋ํด์ ๊ณต๋ถํ๋ ค๊ณ ํ๋ ๊ฒ๋.. axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด์ ์ฐพ์๋ณด๋ค๊ฐ.. ์ดํด๊ฐ ์ ๋์ง ์์์.. ์ฐพ์๋ณด๊ฒ
์ค๋์ React Hook Form ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ MUI์ ๊ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํฌ๋ํธ๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ด ๋๋ ๋ณด๋ ค๊ณ ํฉ๋๋ค.์ฐ์ React Hook Form ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๊ฐ๋ ์์ด MUI ์ปดํฌ๋ํธ๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ๊น์ง ๋๋ฌด ํ๋ค์์ต๋๋ค.. ๐ฉ
์ฌ์ฉ์์๊ฒ ์ ํฉํ ๋ ์ด์์์ ์ ๊ณตํ๊ธฐ ์ํด์ media query๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ๋จ๋ง๊ธฐ์ ์ ํ์ด๋ ํด์๋์ ๋ฐ๋ผ ์น ์ฌ์ดํธ๋ ์ฑ์ ์คํ์ผ์ ์์ ํ ๋ ์ ์ฉํฉ๋๋ค.์ฅ์น์ ์ผ๋ฐ์ ์ธ ๋ฒ์ฃผ๋ฅผ ๋ํ๋ ๋๋ค.not์ด๋ only ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋๋ฅผ ์ ์ธํ๋ฉด ์ ํ์ฌ
Next.js์ ์ ์ฒด์ ์ผ๋ก Emotion์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.ํ์ฌ์์ ์ฃผ๋ก ๋ชจ๋ฐ์ผ ์น์ฑ์ผ๋ก ์์ ์ ํ๋ค๊ฐ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ ํ๊ฒ ๋๋๋ฐ์.๋ฐ์ํ ์น์ผ๋ก ์์ ์ํ๊ณ ์ด๊ธฐ์ธํ ๊น์ง ํ๋ ค๊ณ ํ๋ ์ต์ํ์ง ์์ ๋ถ๋ถ์ด ๋ง์์ต๋๋ค ๐ขemotion์์ ์ ๊ณตํ๋
CRA๋ก ๊ตฌ์ถํ ๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์ eslint์ prettier๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ฒจ๋ณด๋ ค๊ณ ํฉ๋๋ค!๊ธฐ๋ณธ์ ์ผ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ก ์ธ์ด๋ฅผ ์ค์ ํ๊ณ CRA๋ฅผ ํตํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค๋ฉด typescript-eslint๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.์ ์ฒด์ ์ธ
Next.js์ pageExtensions ๊ธฐ๋ฅ์ ํตํด์ index.page.tsx์ ๊ฐ์ ํ์์ผ๋ก ํ์ด์ง๋ฅผ ํํํ ์ ์์ต๋๋ค!pageExtensions๋ next.config.json ์ต์ ์ค ํ๋๋ก ํน์ ํ์์ ์ด๋ฆ์ ํ์ด์ง๋ก ์ธ์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.์ด๋ ๊ฒ ์ฌ์ฉํ๋
์ด์ ์ ๋๋ง์ eslint-config ๋ง๋ค๊ธฐ (์ด๋ก ํธ)์ ํฌ์คํ ํ๋๋ฐ์!์ฌ์ค ์ด๋ก ํธ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ESLint์ ๊ณต์๋ฌธ์์ ์ผ๋ถ๋ฅผ ๋ฒ์ญํ ๋ด์ฉ์ ๋๋ค!์ค์ ๋ก eslint-config๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ ๋ค์ํ ๋ถ๋ถ์ ์ดํดํ ์ ์์ด์ผํ ๊ฒ ๊ฐ์ต๋๋ค.๋ค๋ฅธ eslint-c
ํด๋น ํฌ์คํ ์ eslint ๊ณต์ ํํ์ด์ง๋ฅผ ๋ฒ์ญํ ๋ด์ฉ์ ๋๋ค.ESLint Configuration์ ๊ณต์ ํ๊ธฐ ์ํด์๋, ๊ณต์ ๊ฐ๋ฅํ config๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.๊ณต์ ๊ฐ๋ฅํ config๋ฅผ NPM์ ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ด ๋ฐฐํฌ๋ config๋ฅผ ๋ค์ด๋ก๋ํ๊ณ
์ด์ ์ @typescript-eslint์ prettier๋ฅผ ์ค์ ํ ์ ์ด ์์ต๋๋ค.prettier๋ ์ฝ๋ ํฌ๋งทํ ์ ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ์ค์ ํ ๋ด์ฉ์ด ์์๋๋ฐ์.eslint์ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.์ ๋ ๊ธฐ์กด์ CRA์ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ์์ต
์ฝ๊ณ , ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ผ์ข ์ ์ฝ๋ฉ ์คํ์ผ ๊ท์ฝ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฐ์ ํ์ ๋ฆฐํฐ๋ก ๊ฒ์ถํ ์ ์๋ ๋ชจํธํ ๋ถ๋ถ์ ๊ฐ์ด๋์ด๋ฒ์ ํ์ฌ์์ ๋งํฌ์ ์ฝ๋ฉ ์ปจ๋ฒค์ ๊ด๋ จํด์ ์ ๋ฆฌํ๊ฒ ๋ ๊ธฐํ๊ฐ ์๊ฒผ์ต๋๋ค.์ฌ๋ฌ ํฌ์คํ ๋ค์ ์ฐพ์๋ณด๊ณ ์ ํฌํํ ๋ง๋ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์์ฑ
๋ฆด๋ฆฌ์ฆ ๋ ธํธ๋ ๋ฌด์์ผ๊น? ๐ค์ผ์ ์์์ ๋ฆด๋ฆฌ์ฆ ๋ ธํธ์ ๊ฐ์ฅ ๋น์ทํ ๋ ธํธ๋ฅผ ์ฐพ์ ์ ์๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น์?์ ๊ฐ ์๊ฐํ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ๊ฒ์ ์ ๋ฐ์ดํธ(ํจ์น) ๋ ธํธ๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋๋ค.์ด๋ ํ ์๋ก์ด ์ด๋ฒคํธ๋ค์ด ์ถ๊ฐ ๋๋์ง, ์บ๋ฆญํฐ์ ๋ฐธ๋ฐ์ค ํจ์น, ๋ฒ๊ทธ ์์ ๋ฑ ์ฝ
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ ํ์ ์คํฌ๋ฆฝํธ์ ๋ํ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ฃผ๋์ ์ผ๋ก ๋ค๋ฃจ๊ฒ ๋ ๊ธฐํ๊ฐ ์๊ฒจ์ ์๋ฃ๋ฅผ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.๋ค๋ฅธ ์๋ฃ๋ค์ ์ฐพ์๋ณด์๋ฉด ํจ์ฌ ๋ ๋ง์ ์ปจ๋ฒค์ ๋ด์ฉ์ ํ์ธํ์ค ์ ์์ต๋๋ค.์ ๋ TypeScript ์ปจ๋ฒค์ ์ผ๋ก ๋ถ๋ฅ๋ ์ ์์๋งํ ๋ด์ฉ๋ง ๊ฐ๋จํ๊ฒ ์ถ๋ ค๋ณด์์ต๋๋ค
๊ธฐ์กด์ CSS-in-JS๋ก emotion์ ์ฌ์ฉํ๊ณ ์์๋๋ฐ์.styled-components์ ๋ฌ๋ฆฌ emotion์์๋ stylelint๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์์์ต๋๋ค.๊ณต์๋ฌธ์๋ฅผ ๋ด๋ stylelint์ ๊ด๋ จ๋ ๋ด์ฉ์ ์ฐพ์๋ณด๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ๐คฆโโ๏ธ๋ช ์ผ๋์ ์
์ ๋ฌด, ๊ฐ์ธ ํ๋ก์ ํธ ๋ฑ ์ฐ๋ฆฌ๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋งค์ผ ์์ฑํฉ๋๋ค.๊ฐ์ธ์ ์ผ๋ก ๊ทธ๋งํผ ์ ๋๋ก ์ ๊ฒฝ์ฐ์ง ์๊ณ , ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ๋ ๊ฒ ๊ฐ์ต๋๋ค.์ค๋์ ์ด๋ ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์ ์ปค๋ฐ ๋ฉ์์ง ์์ฑ๋ฒ์ ๋ํด์ ๋๋ ๋ณด๋ ค๊ณ ํฉ๋๋ค.์ฌ์ค ํ์ฌ์์๋ ์ด๋ ๊ฒ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ์ธ์! ๋ผ๊ณ
์ค๋์ git ๋ช ๋ น์ด์ ๋ํด์ ํบ์๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋ ค๊ณ ํฉ๋๋ค.์ต๊ทผ์ ํบ์๋ณด๊ธฐ ๋ผ๋ ๋จ์ด๊ฐ ์ ๋์ ๋ง์ด ๋ณด์๋๋ฐ์ํบ์๋ณด๊ธฐ๋ ๊ตฌ์๊ตฌ์ ๊ผผ๊ผผํ ์ดํด๋ณด๊ธฐ ๋ผ๋ ๋ป์ด ๋ฉ๋๋ค!๋ณธ ๋ป์ ์ฐพ์๋ณด๋ฉด, 'ํบ๋ค'๋ผ๋ ๋ป์ ํ์ด ์๋ ๊ณณ๋ง๋ค ๋ชจ์กฐ๋ฆฌ ๋๋ฌ์ด ๋ค์ง๋ฉด์ ์ฐพ๋ค ๋ผ๋ ๋ป์ ๋๋ค.
enum์ ์ฌ์ฉํ๋ ์์ค ์ฐ์ฐํ enum์ ์ฌ์ฉํ๋ฉด ์๋๋ค๋ผ๋ ํฌ์คํ ์ ๋ณธ ์ ์ด ์์ต๋๋ค.ํ์ง๋ง ์ enum์ ์ฌ์ฉํ๋ฉด ์๋๋์ง์ ๋ํด์๋ ์์ธํ๊ฒ ์์ง ๋ชปํ์ต๋๋ค.์ค๋์ ๊ผญ enum์ ์ฌ์ฉํ๋ฉด ์๋๋ ๊ฒ์ธ๊ฐ..? ์ ๋ํด์ ์์ธํ๊ฒ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.์ ๊ฐ ์ํ ์กฐ์ง์
์ค๋์ eslint์ ๋ํด์.. ์ ๋ง ๋ง์ง๋ง์ผ๋ก ESLint์ ๋ํด์ ๋ฟ์ ๋ณด๋ ค๊ณ ํฉ๋๋ค..!๊ทธ๋๋ ์ด์ ์ @typescript-eslint๋ styleslint ๋ฑ์ ์ฌ์ฉํ๋ฉด์ eslint๋ฅผ ๊ทธ๋๋ ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ๊ณ ์์๋๋ฐ์!๋งค๋ฒ ์ฌ์ฉ์ ํ ๋๋ง๋ค ๊ณ์ ํท
์ค๋์ $์ \_์ ์๋ฏธ๋ฅผ ์์ธํ๊ฒ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค.์ด์ ์ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด์ $๋ ์์ฃผ ๋ณผ ์ ์์๋๋ฐ์.\_๋ ์กฐ๊ธ ์์ํ๊ธฐ๋ ํ๊ณ , ์ ํํ ์๋ฏธ๋ฅผ ์ ๋ฆฌํด๋๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ์์ ๋ด์ฉ์ ์ฐพ์ ๋ณด์์ต๋๋ค.์์ฆ ๋ง์ ๋ถ๋ถ์์ ๊ณต๋ถ๊ฐ ํ์ํ๋ค๊ณ ๋๋๋๋ค.. ๐$์
์ด์ ์ ํ์ ์คํฌ๋ฆฝํธ ์ฝ๋ฉ ์ปจ๋ฒค์ ๊ด๋ จ ๋ด์ฉ์ ์์ฑํ๋ฉด์ ๊ถ๊ธํ ์ ์ด ์๊ฒผ์ต๋๋ค.any ํน์ unknown ๋ ํ์ ์ ์ ์ฌ์ฉํ์ง ์์ง๋ง, ์ด๋ค ํ์ ์ ์ฌ์ฉํ๋๊ฒ ๋ง๋์ง์ ๋ํ ๋ด์ฉ์ ๋ค๋ฃจ๋ ์ปจ๋ฒค์ ์ด ๋ง์์ต๋๋ค.๊ทธ ์ค์์ ์ฐ์ํํ์ ๋ค ๊ธฐ์ ๋ธ๋ก๊ทธ์์ ํด๋น ๋ด์ฉ์ ๋ํด์ ๊ต