๋ฆฌํฉํ ๋ง ๋ฆฌ์คํธ (ํธ๋ฏผ)
- Axios ์ฝ๋ ์ถ์ํ
- ํ๋ก์ ํธ ๋น์์ axios ์ฝ๋์ ๋ํ ์ถ์ํ๊ฐ ์ ํ ์งํ์ด ์๋์๋๊ฑธ๋ก ๊ธฐ์ตํ๋๋ฐ ํด๋น ๋ด์ฉ์ด ๋ฐ์๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- RTK โ tanstack Query
- ์ ์ฒด ์ฝ๋์ ๋ฐ์ํ๋ค๊ธฐ๋ณด๋จ ํ์ต์ด ์ฃผ ๋ชฉ์ ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
- RTK์ ๋ํ ๊ธฐ์ ๊ณต์ ๊ฐ ๋์ด์์ง ์์์ ๋๋ค ๊ธฐ์ ๊ณต์ ๊ฐ ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
- tanstack์ ์ฌ์ฉํ์ ๋ Suspense๋ ErrorBoundary๋ฅผ ํตํด์ ๋ก๋ฉ, ์๋ฌ์ฒ๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์์ ๊ฒ ๊ฐ์์
- styled-component
- ํ์ฌ styled-component์ ๋ค์ด๋ฐ์ด ์ ์ฉ์ด ์๋์ด์์ด์ ํ๋์ ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ด ์กํ๋ฉด ํต์ผ์ฑ ๊ฐ์ถ๊ธฐ๊ฐ ์ข์ ๊ฒ ๊ฐ์์.
- ํ๋ฉด ๋ ์ด์์ ์ก์ ๋ ๊ฐ์ ๋ ์ด์์์ ์ก์์ ํต์ผ์ฑ์ด ์๋๋ฐ ๋์์ธ + ์์ ์ ๊ฐ์ดํ๋ ๋ฐฉํฅ๋ ์ข๊ฒ ์ด์
- ์๋งจํฑ ํ๊ทธ ์ ์ฉ๋ ๊ฐ์ดํ๋ฉด ์ข๊ฒ ๋ค์.
- accessToken ๋ฉ๋ชจ๋ฆฌ ๋ณด๊ด
- accessToken์ด ์น ์คํ ๋ฆฌ์ง์ ๋ณด๊ด๋๋ฉด ํ์ทจ์ ๋ํ ์ํ์ฑ์ด ์กด์ฌํฉ๋๋ค.
- ์ ์ญ์ํ๊ด๋ฆฌ๋ก ๊ด๋ฆฌํ๋๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ๊ฒ ๊ฐ๊ณ tanstack์ ํตํด์ ๊ด๋ฆฌํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
- ํด๋๊ตฌ์กฐ ๋ณ๊ฒฝ
- ํ์ฌ ํ์ด์ง๋ณ ์ปดํฌ๋ํธ๋
src/components
์ ํฌํจ๋์ด์๋๋ฐ ํด๋น ํ์ด์ง๋ณ๋ก ๊ตฌ๋ถํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์. - ๊ทธ๋ฆฌ๊ณ
Interface
Styled
์์นํด์ผํ๋ ๊ณณ์ ๋ช ํํ๊ฒ ๊ตฌ๋ถํ๋ฉด ์ข๊ฒ ์ด์
- Custom Hooks
- ์ปดํฌ๋ํธ๋ณ๋ก ๊ธฐ๋ฅํด์ผํ๋๊ฒ๋ค์ด Custom Hooks๋ก ๋๋ ์ ธ์์ง ์๋ ์ฝ๋๋ค์ด ๋ง์๋ฐ ์ฝ๋๋ถ๋ฆฌ๊ฐ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค
- ex) API ํธ์ถ์ฝ๋ , Form ์ํ๊ด๋ฆฌ ๋ฑ
- React-Hook-Form
- ํผ ์ํ๊ด๋ฆฌ๊ฐ ํ์ฌ
state
์useEffect
๋ก ๊ด๋ฆฌ๋๋๊ฒ ๋ง์๋ฐ ์ ํฌ QA๋ฐ์๋๋๋ก React-Hook-Form ๋ฅผ ์ฌ์ฉํด์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋๊ฒ๋ ์ข์๋ณด์ ๋๋ค.
- Story book
- ์คํ ๋ฆฌ๋ถ ๋์ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
- Storybook์ ํตํด์ ui ์คํ ๋ฆฌ ํ ์คํธ๋ฅผ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์์
- msw๋ฅผ ํตํด์ API ๋ฅผ ๋ชจํนํด์ ํ ์คํธ๋ฅผ ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์์
- ์ฝ๋์ปจ๋ฒค์ ๊ท์ ๋ณ๊ฒฝ ๋ฐ ์ ์ฉ
- ์ฝ๋์ปจ๋ฒค์ ์ ์ ํ๋๋ฐ ์ค์ง์ ์ผ๋ก ์ฌ์ฉํ๋ฉด์ ๋ฐ์ํ๊ธฐ ์ด๋ ค์ ๋๊ฒ๋ ๋ง์๊ณ ๋ฐ์์ด ์๋์ ๋ค๋๋ง์์ ๊ฐ์ด ์ ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์
โ ๊ธฐ์ ์ ์ธ ๋ณ๊ฒฝ์ฌํญ๋ค๋ ํฌํจ๋๊ณ ์ฝ๋ ํ๋ฆฌํฐ์ ์ธ ์์ ๋ค๋ ์กด์ฌํ๋๋ฐ ๋ฆฌํฉํ ๋ง์ ๋ชฉ์ ์ ํ์ต์ผ๋ก ๋๊ณ ์๊ฐํ์ ๋ ๋ชจ๋ ๋ด์ฉ์ ์์ ๋ณด๋จ ๊ธฐ์ ๊ณต์ ์ ์ด์ ์ ๋๋๊ฒ ์ข์ ๊ฒ ๊ฐ์์. *๊ฐ์ธ์ ์ธ ์๊ฒฌ์
๋๋ค.
๋ฆฌํฉํ ๋ง ๋ฆฌ์คํธ (์ํ)
- Status ํ์ผ ์ญ์
- Status ๋ ๋ฆฌ๋์ค ์ฌ๋ผ์ด์ค๋ก ๋ก๋ฉ ๋ฐ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ํ๋ ค๊ณ ๋ง๋ค์์ง๋ง, ์ฌ์ฉํ๊ธฐ ๋ฒ๊ฑฐ๋กญ๊ณ ํ์ฅ์ฑ์๊ฒ ๊ตฌํ๋ ๊ฒ์ด์๋๋ผ. ๋ ๊ธฐ๋ฅ์ ๋ถ์ด๊ธฐ์ ์ ๋งคํด์ง ์ํ์ ๋๋ค. ๋๊ตฐ๋ค๋ ๋ฉ์ธ ํ์ด์ง์๋ง ์ ์ฉ๋ ์ํ์ ๋๋ค. ํ ์คํ์ผ๋ก ๋ฆฌํฉํ ๋ง ์์ ์ ํ๋ค๋ฉด ํด๋น ์ฌ๋ผ์ด์ค๋ฅผ ์ ๊ฑฐํ๋๊ฒ์ด ์ข์๋ณด์ ๋๋ค.
- ์ปดํฌ๋ํธ๋ค์ ๋ ์ฝ๊ธฐ์ฝ๊ฒ ๋ฆฌํฉํ ๋ง
- ๋ช ๋ นํ์ผ๋ก ์์ฑ๋์ด์๊ฑฐ๋, ๋ก์ง์ ํ๋ฆ์ด ํฉ์ด์ ธ์๋ ์ปดํฌ๋ํธ๋ค์ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ฆฌํฉํ ๋งํด์ผํ ๊ฒ ๊ฐ์ต๋๋ค.
- ์ปดํฌ๋ํธ ์ฌ์ค๊ณ
- ์ปดํฌ๋ํธ๋ค์ ์ ์ด์ ์ค๋ณต์ด ๋ฐ์ํ์ง์๋๋ก ํ์ํ ๊ธฐ๋ฅ๋ค๊ณผ, ์ค๋ณต๋ ์ปดํฌ๋ํธ๋ค ํน์ ํจ์๋ค์ ๋ฏธ๋ฆฌ ์ถ์ํํ ์์๋๋ก ์์ํ์ฌ ์ฌ์ค๊ณ ํด๋ณด๋๊ฒ๋ ์ข์๊ฒ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ์ฝ๋๋ฅผ ๋ค ๋์ฒดํ์ง ๋ชปํ๊ฒ ์ง๋ง ์ฌ๊ฑด์ด๋๋ค๋ฉด ๋ช๋ช ๋ถ๋ถ์ ์ฌ์ค๊ณ๋ ์ฝ๋๋ก ๋์ฒดํด๋ณด๋๊ฒ๋ ์ข์๊ฒ ๊ฐ์ต๋๋ค.
- Import ๊ตฌ๋ฌธ ๋ฆฐํธ ๊ท์น ๊ตฌํ
- ์ ๋ฒ์ ํด๋น ๋ฆฐํธ๋ฅผ ์๋ฒฝํ ์ค์ ํ์ง์์์ ์ผ์ผ์ด ์์์๋ง๊ฒ import ๋ฅผ ์ฌ์ ๋ ฌ ํด์คฌ๋๋ฐ. ๋ฆฐํธ๊ท์น์ ๋ง๋ค์ด ํด๋น๋ถ๋ถ์ ์๋ํ ํ ์ ์์๊ฒ ๊ฐ์ต๋๋ค.
- ํ ์คํธ๋ฐฐํฌ ์๋ฒ๋ฅผ ๋์ฐ๊ธฐ
- ์ด๋ฒ 3์ฐจํ์์ ํด๋น ๋ถ๋ถ์ ๊ตฌํ ํด์ฃผ์ ์. Pr ์ด์ฌ๋ผ๊ฐ๋ฉด ๋ฐ๋ก ํด๋น ๊ตฌํ์ ์น์์ ํ ์คํ ํด๋ณผ์ ์์ต๋๋ค. ์ด๋ฒ์ ๋ฏธ๋ฆฌ cicd? ๋ฅผ ๊ตฌํํ์ฌ ์์ ํ๋ค๋ฉด. ์ง์ ๋ก์ปฌ์์ ๋ธ๋์น๋ฅผ ๋ฐ๊ฟ ์คํํ์ฌ ํ ์คํธ ํ์ง์์๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์คํ ๋ฆฌ๋ถ์ ๋ฐฐํฌํด๋ณด๋๊ฒ๋ ์ข์๊ฒ ๊ฐ์ต๋๋ค.
๋ฆฌํฉํ ๋ง ๋ฆฌ์คํธ (์งํธ)
- ๋ชจ๋ฐ์ผ ๋์
- ๋ชจ๋ฐ์ผ ๋์์ ๋ชปํ๊ฒ ๊ฑธ๋ ค์ ์ฝ๋ ๋งํฌ์ ์ ๋ค๋ฌ๊ณ ์ถ์ด์ก์ต๋๋ค. ์ฝ๋ ํ์ธ & ๊ตฌํ๋ฌผ ํ์ธ ๋ชจ๋ ๊ด์ฐฎ๊ฒ ๋ณด์ด๋ ค๋ฉด ์ด๋์ ๋ ๋์์ ๋์ด์ผ ํ์ง ์์๊น ๊ณ ๋ฏผ๋๋ค์
- ๋ฉ์ธ ํ๋ฉด FCP ๊ฐ์
- ์ฒซ ํ๋ฉด์์ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ์ด์ฉ์ ์ ์ถ ํ๋ฅ ์ด ๋์์ง๋ ๋งํผ ๋น ๋ฅธ ํ๋ฉด์ ๋ณด์ฌ์ค์ผํ ํ ๋ฐ, API ๋ถ๋ฌ์ค๋ ์์ด ๋ง์์ ์ด๋ฅผ ์ข ์ค์ผ ๋ฐฉ๋ฒ์ ์์๊น ์ถ์ด์ก์ต๋๋ค. (๋ฑํ ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด๋๊ฑด ์๋์์)
- ๊ทธ ์ธ์๋ tanstack-query, react-hook-form ๋ชจ๋ ์ข์ ๊ฒ ๊ฐ์์ ํ์ต ๋ชฉ์ ์์ ์ด์ ์ค์ ์ ์ฌ์ฉํ๋ ๊ธฐ์ ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ค ๋ณด๋ฉด ์๋ฏธ์๋ ์์ธ๊ณผ ๊ฐ์ ์ฑ ์ด๋ผ ์๊ฐ๋๊ตฌ์.