[react-study] - (4)
2024-10-01
๋ฆฌ์กํธ๋ฅผ ์ด๋ ์ ๋ ๋ฐฐ์ ๊ณ , ํด์ปคํค์ ์ฐธ๊ฐํ์ฌ ํ์
ํ๋ ๊ฒฝํ์ ์๊ธฐ ์ํด ๊ตฌ๋ฆํค ์ ๋๋ธ์ ์ง์ํ ๋งํผ ์ผ์ํ๋ ํด์ปคํค์ ์ฐธ๊ฐํ๊ฒ ๋์์ต๋๋ค.
์ฒซ ํด์ปคํค์ ์ฐธ์ฌํ๋ฉฐ ์์๊น์ง ํ๋ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ฉฐ 4์ฃผ์ฐจ ์คํฐ๋ ํ๊ณ ๋ฅผ ๋ ๋จน ์์ฑํ๋ ค๊ณ ํฉ๋๋ค.
์ฒซ ํด์ปคํค์ด๋ ๋งํผ ๊ธฐ๋ ๋ฐ, ์ค๋ ๋ฐ์ผ๋ก ์ํ์ต๋๋ค. ์ผ์์ผ ์คํ์ ํ์์ด ๋ชจ์ฌ ์์ด๋์ด ํ์๋ฅผ ์งํํ๊ณ , ์์์ผ ์คํ์๋ ํ๋ฒ ๋ ๋ชจ์ฌ ์์ด๋์ด ํ์๋ฅผ ์งํํ์ต๋๋ค.๋ ์ฐจ๋ก์ ์์ด๋์ด ํ์๋ฅผ ํตํด, ํจ๊ป ๋ชฉํ๋ฅผ ์ด๋ฃจ๋ ๋ชฉํ ๊ด๋ฆฌ ์ฑ์ ๋ง๋ค์๋ ๋ฐฉํฅ์ด ๋์ค๊ฒ ๋์ต๋๋ค.
ํ์ ๋ชจ๋ ํ๋์ ๋ชฉํ๋ฅผ ์ด๋ฃจ๋ฉด, ๊ตฌ๋ฆ๋ค๋ฆฌ๊ฐ ํ์นธ ๋ง๋ค์ด์ง๋ฉฐ, ๊ทธ๋ ๊ฒ ํ๋ฃจ์ 4๊ฐ์ ๊ตฌ๋ฆ๋ค๋ฆฌ๋ฅผ ๋ชจ๋ ๊ฑด๋๋ ๊ฒ์ผ๋ก ๋งค์ผ 4๊ฐ์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ์ฑ์ด ๊ธฐํ๋์์ต๋๋ค. ์ฑ์ ๋ฐฉํฅ์ฑ๊ณผ ์ปจ์ ์ด ์ ํด์ง ํ, UI์ ๋ํ ๋ด์ฉ์ด ๋ด๊ธด ์์ด์ดํ๋ ์๊ณผ ์ธ๋ถ ๊ธฐํ์ฌํญ์ด ๋์ค๊ธฐ์ ๊น์ง ๋ฌ๋ฆด ์ค๋น๋ฅผ ํ์ต๋๋ค.
์์์ผ ๋ฐค, ์์ด์ดํ๋ ์๊ณผ ์ธ๋ถ ๊ธฐํ์ด ์ ํด์ก์ต๋๋ค. ์ด ์ดํ ๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ ํ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฝ๋ฉ์ ์์ํ์ต๋๋ค. ์ฌ์ฉํ ๊ธฐ์ ์คํ์ ๋ฆฌ์กํธ, TypeScript, TailwindCSS, Zustand๋ก ์ ํ์ต๋๋ค. ๋ฆฌ์กํธ์ TailwindCSS์ ๊ฒฝ์ฐ ๋์ ์ด๋ฆ ๋ง์ถ๊ธฐ ํ๋ก์ ํธ๋ฅผ ํตํด ํ๋ฒ ์ฐ์ต์ ํด๋ณธ ์ ์ด ์์์ต๋๋ค. ํ์ง๋ง TypeScript์ Zustand๋ ํ๋ฒ๋ ํด๋ณธ์ ์ด ์์ด์ ๊ฑฑ์ ์ด ์์ฐ์ต๋๋ค.
์ ์ผ ๋จผ์ ํ์ํ ํ์ด์ง๋ค์ ๋ผ์ฐํ ํ๊ณ , ํค๋์ ํธํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ธ๋ถ ํ์ด์ง ๋ด์ฉ์ ์์ด์ดํ๋ ์์ด ์ ์ ์์ธํด์ง์๋ก ๋ณํ ๊ฒ ๊ฐ์, ๊ฐ์ฅ ์ ๋ณํ ๊ฒ ๊ฐ์ ๋ถ๋ถ๋ถํฐ ๊ฑด๋๋ ธ์ต๋๋ค. ํค๋์ ํธํฐ๋ฅผ ์ ์ํ ํ, ์ฃผ์ ๊ธฐ๋ฅ ํ์ด์ง์ธ ๋ชฉํ ์ ๊ฒ๊ณผ ๋ง์ด ํ์ด์ง๋ ๋ฉ๋ ์ฑ ์ด์ฉ๋ฐฉ๋ฒ๊ณผ ์๋น์ค ์๊ฐ๋ฅผ ๋ง๋ค์์ต๋๋ค.
๋ชจ๋ฐ์ผ์์๋ ์ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด ๋ธ๋ ์ดํฌํฌ์ธํธ๋ค์ ๋ง๋ค์ด์ฃผ๋ฉฐ ์ ์ํ์ต๋๋ค. ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ์ ์ฒดํ๋ฉด์์ ์ ๋ณด์์ง๋ง, ์ ๋งคํ ํฌ๊ธฐ์ ์ฐฝ์์ ๋ ์ด์ด๊ฐ ๊นจ์ง๋ ๋ฑ ๋ช๋ช ๋ฌธ์ ๋ค์ด ์๊ฒจ์ ๊ทธ๋ถ๋ถ์ ๋ํด ๊ณ ๋ฏผ์ ํด๋ณด๊ธฐ๋ ํ์ต๋๋ค.
ํด์ปคํค ๋น์ผ, ์ ํฌ ํ ๋ชจ๋ 2์์ฏค ๋ค ๋ชจ์ฌ์ ๋ณธ๊ฒฉ์ ์ธ ์์ ์ ์์ํ์ต๋๋ค. 1์ฃผ์ผ์ ์ค๋น๊ธฐ๊ฐ๋์ ํ๋ก ํธ / ๋ฐฑ์๋ ๋ชจ๋ ํ๊ฒฝ์ธํ ๊ณผ ๊ธฐ๋ณธ์ ์ธ ์์ ์ ๋๋ง์ณค๊ธฐ์, ๋ณธ๊ฒฉ์ ์ผ๋ก ์ด๋ ค์ด ์์ ๋ค์ ์์ํ ์ ์์์ต๋๋ค. ํ๋ก ํธ์ ๋ฐฑ์๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ผ๊ณผ ํต์ฌ ๊ธฐ๋ฅ์ธ ๋ชฉํ ํ์ด์ง๋ฅผ ํ์ํ๋ ์ผ์ ํ์ต๋๋ค.
๊ธฐ์กด์ ์น๊ฐ๋ฐ์ ์ฒ์ ๋ฐฐ์ธ๋๋ ํ๋ก ํธ๋ง ์ฌ์ฉํ๋ ์ ๋๋ก ๋ฐฐ์์ ๋ฐฑ์๋์์ api๋ฅผ ํตํ ํ์ ์ ์ฒ์ ๊ฒฝํํ๊ฒ ๋์์ต๋๋ค. ๋คํํ ์ ํฌ ํ๋ก ํธ ํ์ด api ์์ฒญ ๊ด๋ จ ์ ํธ ํจ์๋ฅผ ๋ง๋ค์ด์ฃผ์ด์ import๋ฅผ ์ด์ฉํด ์ฝ๊ฒ ์์ฒญ์ ํ ์ ์์์ต๋๋ค. (์ ๋ง ๊ฐ์ฌํฉ๋๋ค ใ ใ ๋ง๋ค์ด๋์ ํจ์, ๋ค์ ํ์ ์์๋ ์ ์จ๋จน๊ฒ ์ต๋๋ค!)
์ ํฌ ํ๋ก์ ํธ์ ์ํ์ด์ ์ค๋ฉ๊ฐ์ธ ๋ชฉํ ํ์ด์ง๋ฅผ ๋ง๋ค๋ฉฐ ๋ง์ ๊ฒ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ํด๋น ์ฌ์ง ์์ ๋ณด์ด๋ ๊ตฌ๋ฆ๊ณผ ๋ฌด์ง๊ฐ๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํด CSS์ Grid๋ฅผ ์ ๊ทน ํ์ฉํ๊ณ , ์์ฐ์ค๋ฌ์ด ์ ํ์ ์ํด CSS ์ ๋๋ฉ์ด์ ๋ ์ฌ์ฉํ์ต๋๋ค.
์๋์ชฝ ํ์ ์นด๋ ํด๋ฆญ์, ์๋จ ๊ตฌ๋ฆ๋ค๋ฆฌ ์ ํ์ ์ํด ์ด๋ป๊ฒ ์ปดํฌ๋ํธ๋ผ๋ฆฌ ํต์ ํ ์ง ๊ณ ๋ฏผํ๋ค Zustand
๋ผ๋ ์ ์ญ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉํด๋ณด๊ฒ ๋์์ต๋๋ค. ์ ์ญ์ํ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๋ค๋ ์
๋ช
๊ณผ ๋ฌ๋ฆฌ, ์ง์ ์ฌ์ฉํด๋ณด๋ ๋งค์ฐ ์ฝ๊ณ , ์ง๊ด์ ์ด์ฌ์ ๋ค์์๋ ํ์์ ์ฃผ์ ์์ด ์ฌ์ฉํ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํด์ปคํค์ ์ค๋นํ๋ฉฐ ๋ฐค์ ์๋ค๋ ์ด์ผ๊ธฐ๋ ๋ง์ด ๋ค์์ง๋ง, ์ ๋ง ๋ฐค์ ์์ค์ ๋ชฐ๋์ต๋๋ค. ๊ทธ๋๋ ํ์๋ค๊ณผ ๊ฐ์ด ์ฝ๋ฉ์ ํ๋ฉฐ ๋ฐค์ ์๋ ์๋ค๋ฅธ ๊ฒฝํ์ด ๋์์ต๋๋ค. ์๋ฒฝ์ ์งํํ๋ ๋ญํค ๋๋ก์ฐ์ ๋น์ฒจ๋์ด ๋ฌด๋ํ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ชจ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ
๋ผ๋ ์ฑ
๋ ๋ฐ์ ์ ์์์ต๋๋ค.
๋ฐค์ ์ฝ๋ฉ๊ณผ ์์นจ๊น์ง ๋ฐํ์๋ฃ๋ฅผ ํ์๋ค๊ณผ ๋ง๋ค๋ฉฐ ์ด๋๋ง ์ ์ถ ๋ง๊ฐ์๊ฐ์ด ๋ค๊ฐ์์ต๋๋ค. ๊นํ๋ธ์ README๋ฅผ ์กฐ๊ธ ๊พธ๋ฏธ๋ฉฐ ์ ์ถ ์ค๋น๋ฅผ ํ์ต๋๋ค. ์ ํฌ ํ์ ๋ชจ๋ 1์ฃผ์ผ ์ ๋ถํฐ ์ด์ฌํ ๋ฌ๋ ค์ ๊ทธ๋ฐ์ง ์ ์ถ ์ง์ ๊น์ง ์ฐ๋ค๋ค ์ฝ๋ฉํ๋ ์ผ์ ์์์ต๋๋ค. ๋ฐฐํฌ์ ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ๋ง์ง๋ง์ผ๋ก ์ ๊ฒ ํ, ์ ์ถ ๋ฉ์ผ์ ๋ณด๋์ต๋๋ค...
์ ์ถ ํ ๊ฐ ํ์ ๋ฐํ๋ฅผ ๋ค์ด๋ณด๋ฉฐ ์๊ฐ๋ณด๋ค ์ฃผ์ ๊ฐ ๋น์ทํ๋ค๋ ์๊ฐ์ ํ๊ฒ ๋์์ต๋๋ค. 8ํ์ค ๋ชฉํ๊ด๋ฆฌ ์ฑ์ด ์ ํฌํฌํจ 4ํ์ ๋ ์๋๊ฑฐ ๊ฐ์ต๋๋ค. ๊ฒ๋ค๊ฐ ๊ตฌ์ง๊ตฌ์ง
์ด๋ผ๋ ์ต๋ช
์ง๋ฌธ ์ฑ๊ณผ ๊ตฌ๋ฆ ๋ชจ์ ์์ด๋์ด์ฑ, ์ง๋์ ์ฌํ๊ธฐ๋ก ํ์ ์ฑ๋ฑ ์ฌ๋ฌ ์ฌ๋ฏธ๋ ํ๋ก์ ํธ๋ฅผ ๊ตฌ๊ฒฝํ ์ ์์์ต๋๋ค.
๋๋์ด ์ ํฌ ํ์ ๋ฐํ ์ฐจ๋ก๊ฐ ๋์๊ณ , ๊ธฐํ์๋์ด ๋ฐํ๋ฅผ ์งํํ์๋ ๋์, ํ๋ก ํธ ํ๋ช
๊ณผ ๋ฐฑ์๋ ํ๋ช
์ด ๊ธฐ์ ์ ๋ฌธ๊ฐ๋๊ป ์ด๋ํด ๊ธฐ์ ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ๊ณ , ์์ฐ๋ ์กฐ๊ธ ํ์ต๋๋ค. ์ ๋ฌธ๊ฐ๋๊ป์ ๋ ์ด์ด๊ฐ ํน์ ํด์๋์์ ๊นจ์ง๊ฑฐ๋, ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ JWT
๊ฐ ์๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ ๋ถ๋ถ์ ์ง์ ํด์ฃผ์
จ์ต๋๋ค.
ํ์ง๋ง ๋ถ์ ์ ์ธ ํผ๋๋ฐฑ๋ง ์ฃผ์ ๊ฒ์ด ์๋, ๊ตฌํ๋๊ฐ ์๋นํ ๋์ ๋ค๋ฅธํ์ ๋นํด ๋๋ณด์ธ๋ค๋ ๊ธ์ ์ ์ธ ํผ๋๋ฐฑ๋ ์ฃผ์ ์ ์ ๋ง์์ ๋ค์๋ค๋จ๋ค ํ์ จ์ต๋๋ค ใ ใ . ๊ธฐํ์๋์ด ๋ฐํ๋ฅผ ๋ง์น ํ ์ ํฌ๋ ๊ธฐ๋ค๋ฐด ์ค๋ ๋ฐ์ผ๋ก ๋ค๋ฅธํ์ ๋ฐํ๋ฅผ ๋ค์ผ๋ฉฐ ์ ํฌ๋ผ๋ฆฌ ๋ฑ์๋ฅผ ์ ์ณ๋ณด์์ต๋๋ค.
๋ง์นจ๋ด, ๊ธฐ๋ค๋ฆฌ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ์์ ๋ฐํ ์๊ฐ์ด ๋์์ต๋๋ค. ์์ ์์๋ ๋๋ถ๋ถ ๊ทธ๋ ๋ฏ 3๋ฑ๋ถํฐ ์์ํ์ต๋๋ค. ์ ํฌ ํ ๋ชจ๋ 3๋ฑ์ ํ ๊ฒ์ด๋ผ ์๊ฐํ๊ธฐ์ ๊ธฐ๋๋ฅผ ํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ 3๋ฑ์ด ์ ํฌ๊ฐ ์๋์์ต๋๋ค. ์ดํ 2๋ฑ์ ์ฐจ๋ก๊ฐ ๋ค๊ฐ์๊ณ , ๊ตฌ์ง๊ตฌ์ง
ํ์ด 2๋ฑ์ ์ฐจ์งํ์ต๋๋ค. ๊ตฌ์ง๊ตฌ์ง ํ์ ๊ตฌํ๋๋ ์ข์๊ณ ์์ด๋์ด ์ข์๋ค ์๊ฐํด 1๋ฑ์ผ ๊ฒ์ด๋ผ ์์ํ๋๋ฐ ์์ธ์ฌ์ ์ ํฌ ํ ๋ชจ๋ ๋๊ฐ 1๋ฑ์ผ๊น ์ ๋ง ๊ถ๊ธํ์ต๋๋ค.
๋๋ง์ 1๋ฑ ๋ฐํ ์๊ฐ, ์ฌํ์๋์ ๊ฐ์๊ธฐ ์๊ธฐํ์ด 1๋ฑ์ผ ๊ฑฐ๋ผ ์๊ฐํ๋ ํ ์๋์?
๋ผ๋ ์ง๋ฌธ์ ๋์ง์
จ์ต๋๋ค. ์ ์ ์ด ํ๋ฅด๋ฉฐ ๋ค๋ค ์๋ค๊ธฐ๋ฅผ ์ฃผ์ ํ์ต๋๋ค. ์ ๋ง์ ๋ ๊ธด์ฅ๋ฐ ์ค๋ ๋ฐ์ผ๋ก ๋ฐํ๋ฅผ ๊ธฐ๋ค๋ ธ์ต๋๋ค. ์ฌ๋ผ์ด๋๊ฐ ๋์ด๊ฐ๋ฉฐ, **๋์, "๊ตฌ๋ฆ๋ค๋ฆฌ"**๋ผ๋ ๊ธ์๊ฐ ๋ณด์ด์ ์ ๋ ๋ชจ๋ฅด๊ฒ ์๋ฆฌ์์ ์ผ์ด๋๋ฉฐ ์๋ฆฌ๋ฅผ ์ง๋ฅด๊ณ ๋ง์์ต๋๋ค. 1์ฃผ์ผ๊ฐ์ ๊ณ ์๊ณผ ํผ๋ก๊ฐ ๊ทธ์๋ฆฌ์์ ๋ ์๊ฐ๋ฒ๋ ธ์ต๋๋ค.
๋ง์ง๋ง์ ํ์๋ถ๋ค๊ณผ์ ๊ธฐ๋ ์ฌ์ง์ ๋๋ค. ์์ฝ๊ฒ๋ ์ ํฌ ํ์ ํ๋ช ์ด ์ฌ์ ์ด ์์ด ๋จผ์ ๊ฐ์ จ์ต๋๋ค ใ ใ . ๊ทธ๋๋ ์นดํก์ผ๋ก๋๋ง ์ฐ์น ์์์ ์ ๋ฌํ๊ณ ๋ชจ๋ ๊ธฐ์จ์ ๋ง๊ธฑํ์ต๋๋ค. ์ง์ผ๋ก ๋์์จ ํ ๋ฐค์ ์ ํผ๋ก์ ๋ฐ๋ก ์ ๋ค์ด๋ฒ๋ ธ์ต๋๋ค ใ ใ ใ ใ ใ .
์ด ์ฐ์น์ ๊ธฐํ์ผ์ ๋ค๋ฅธ ๋ํ๋ ํด์ปคํค์๋ ์ฐธ๊ฐํ๋ฉฐ ์ ๊ทน์ ์ผ๋ก ํ๋ํ๊ณ , ์ด๋ ๋ง์ฃผ์น ๋ฌธ์ ๋ค์ ๋ฐ๋ฉด๊ต์ฌ ์ผ์ ๋์ฑ ์ฑ์ฅํด๋ณด๊ฒ ์ต๋๋ค. ๊ธด๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.