- ํ๋ก์ ํธ ์๊ฐ
- ๊ธฐ์ ์คํ
- ์ฃผ์ ๊ธฐ๋ฅ
- ํ๋ฉด ๊ตฌ์ฑ
- ํ ์๊ฐ
- ํด๋ ๊ตฌ์กฐ
- ํ๊ณ ๋ฐ ๋ฆฌํฉํ ๋ง
๋ก๊ณ | ์ค๋ช |
---|---|
![]() |
AROOM์ ํธํ
, ํ์
, ๋ชจํ
์ ๋น๋กฏํ ์ ๊ตญ์ ์์์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์๋น์ค์
๋๋ค. ์ฌ์ฉ์์ ์์ ์กฐํ/์ฅ๋ฐ๊ตฌ๋/์์ฝ ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ๐ ์๋น์ค ๋ฐ๋ก๊ฐ๊ธฐ Click ! ๐ |
- ๊นํ๋ธ ๋ ํฌ
- ํ
์คํธ ๊ณ์
- ์์ด๋ : [email protected]
- ๋น๋ฐ๋ฒํธ : test123
๊ธฐ๋ฅ | ๋ด์ฉ |
---|---|
๋ก๊ทธ์ธ/ํ์๊ฐ์ | ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธํ ์ ์ ์ ์ ๋ณด๋ฅผ ํตํด ํ์ํ ํ์ด์ง ๋ฐ ๊ธฐ๋ฅ์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค. |
๋ฉ์ธ ํ์ด์ง | ์ง์ญ/๊ฒ์ ํ์ด์ง ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๊ณ , ํ๋งค๋/์ฐ ๋ง์ ์ ์์๋ฅผ ์บ๋ฌ์ ํํ๋ก ๋ณผ ์ ์์ต๋๋ค. ์ ์ฒด ์์๋ฅผ ๋ฌดํ์คํฌ๋กค๋ก ์กฐํ ๊ฐ๋ฅํฉ๋๋ค. |
์ง์ญ ํ์ด์ง | ๊ธฐ๋ณธ ํํฐ๋ง(๋ ์ง/์ธ์์/๊ฐ๊ฒฉ)๊ณผ ๋๋ถ์ด ์ง์ญ ํํฐ๋ง๊ณผ ์ ๋ ฌ(๊ฐ๊ฒฉ/ํ๋งค๋)์ ํ ์ ์์ผ๋ฉฐ, ๋ฌดํ์คํฌ๋กค๋ก ํด๋น ์์ ์กฐํ ๊ฐ๋ฅํฉ๋๋ค. ํด๋น ์ง์ญ์ ํธํ ์์น/์ ๋ณด๋ฅผ ์ง๋์์ ์กฐํ ๊ฐ๋ฅํฉ๋๋ค. |
๊ฒ์ ํ์ด์ง | ๊ธฐ๋ณธ ํํฐ๋ง(๋ ์ง/์ธ์์/๊ฐ๊ฒฉ)๊ณผ ๋๋ถ์ด ๊ฒ์ ํํฐ๋ง๊ณผ ์ ๋ ฌ(๊ฐ๊ฒฉ/ํ๋งค๋)์ ํ ์ ์์ผ๋ฉฐ, ๋ฌดํ์คํฌ๋กค๋ก ํด๋น ์์ ์กฐํ ๊ฐ๋ฅํฉ๋๋ค. |
์์ธ ํ์ด์ง | ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ์์์ ์์ธ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํด๋น ์์์ ์์น๋ฅผ ์ง๋์์ ์กฐํ ๊ฐ๋ฅํ๋ฉฐ, ํด๋น ์์์ ๊ฐ์ค ์ ๋ณด ์กฐํ/์ฐ/์์ฝ/์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์ธ์์์ ๋ ์ง๋ก ํํฐ๋ง๋์ด ํด๋น๋๋ ๊ฐ์ค ์กฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. |
์ฅ๋ฐ๊ตฌ๋ | ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ ๊ฐ์ค๋ค์ ์ ๋ณด ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ์ญ์ ๋ฐ ์์ฝ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. |
์์ฝ | ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ์์ฝํ๊ณ ์ ํ๋ ๊ฐ์ค๋ค์ ์์ฝ(๊ฒฐ์ )๊ฐ ๊ฐ๋ฅํฉ๋๋ค. |
์์ฝํ์ธ | ๊ฒฐ์ ๊น์ง ์๋ฃํ๊ฒ ๋๋ฉด ์ฃผ๋ฌธ ๋ฒํธ์ ์์ฝ๋ฒํธ๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค. |
ํ์๊ฐ์ /๋ก๊ทธ์ธ | ๋ฉ์ธ ํ์ด์ง | ๊ฒ์/์ง์ญ ํ์ด์ง |
---|---|---|
![]() |
![]() |
์์ธ/์ฅ๋ฐ๊ตฌ๋/์์ฝ ํ์ด์ง | ์์ธ/์ฐ/์ฅ๋ฐ๊ตฌ๋/์์ฝ ํ์ด์ง |
---|---|
![]() |
![]() |
![]() |
![]() |
์ด์น์ค ํ์ฅ (FE) |
๊น๋ฏผ์ ํ์ (FE) |
์ง์ข
์ ํ์ (FE) |
์ฑ๋ฏผ์ ํ์ (FE) |
์ด๋ฆ | ์ญํ | ๊ฐ๋ฐ ๋ด์ฉ |
---|---|---|
- | ๊ณตํต | - ํผ๊ทธ๋ง ๋์์ธ - ๋ ์ด์์ ๊ตฌํ - msw๋ก mock ๋ฐ์ดํฐ ํ ์คํธ |
์ด์น์ค | FE ํ์ฅ |
- ๊ฒ์/์ง์ญ ํ์ด์ง ย ย ย ย - ํํฐ๋ง (๊ฒ์/์ง์ญ/๋ ์ง/์ธ์์/๊ฐ๊ฒฉ) ย ย ย ย - ์ ๋ ฌ (๊ฐ๊ฒฉ/ํ๋งค๋) ย ย ย ย - ์ง๋ (์ง์ญ๋ณ ์ค์ฌ์ขํ ์ ์ฉ + ์์ ๋ง์ปค/์ค๋ฒ๋ ์ด ํ์) ย ย ย ย - ๋ฌดํ์คํฌ๋กค ย ย ย ย - ์ง์ญ ๋ค๋ก๊ฐ๊ธฐ (์ ํ์ง์ญ ๊ธฐ๋ก ์ธ์ ์คํ ๋ฆฌ์ง ๋ฐฐ์ด) - ๊ธฐํ ย ย ย ย - craco๋ก path alias ์ค์ ย ย ย ย - ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ ์ธํ ย ย ย ย - ๋ก๋ฉ lottie ย ย ย ย - README ์์ฑ |
๊น๋ฏผ์ | FE ํ์ |
- ์์ธ ํ์ด์ง ย ย ย ย - ์์, ๊ฐ์ค ์ ๋ณด ์กฐํ/ ํํฐ๋ง (์ธ์์/๋ ์ง/์ฌ๊ณ ), ์ง๋(์์ ์์น ์ค์ฌ์ขํ/ ๋ง์ปค) ย ย ย ย - ์์ฝ/์ฅ๋ฐ๊ตฌ๋/์ฐ ์์ฒญ - ์์ฝ/์์ฝํ์ธ ํ์ด์ง ย ย ย ย - ์์ฝ/๊ฒฐ์ /์์ฝํ์ธ ๊ธฐ๋ฅ - ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง ย ย ย ย - ๋งํฌ์ - ๊ธฐํ ย ย ย ย - ๋ก๋ฉ/404/needLogin/์นด๋ ์ปดํฌ๋ํธ ย ย ย ย - theme/globalStyle ์ค์ ย ย ย ย - README |
์ง์ข ์ | FE ํ์ |
- ๋ฉ์ธ ํ์ด์ง ย ย ย ย - ์บ๋ฌ์ ย ย ย ย - ๋ฌดํ์คํฌ๋กค ย ย ย ย - ํ๋งค๋/์ฐ ๋ง์ ์/๋ชจ๋ ์์ ย ย ย ย - ๊ฒ์/์ง์ญ ํ์ด์ง ์ฐ๊ฒฐ - ์์ฝ ํ์ด์ง ย ย ย ย - ๋งํฌ์ - ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง ย ย ย ย - ์กฐํ, ๋ฐ์ดํฐ ์์ฝํ์ด์ง๋ก ์ ๋ฌ ย ย ย ย - ์ญ์ |
์ฑ๋ฏผ์ | FE ํ์ |
- ํ์๊ฐ์
/๋ก๊ทธ์ธ/๋ก๊ทธ์์ ย ย ย ย - JWT (AccessToken/RefreshToken) ย ย ย ย - ์ ์ ์ ๋ณด ์ ํจ์ฑ๊ฒ์ฌ ย ย ย ย - ์ ์ ์ ๋ณด ๋ฐ ํ ํฐ ์ ์ญ ๊ด๋ฆฌ - ํค๋/ํธํฐ ย ย ย ย - ๋ก๊ณ , ๊ธฐ๋ฅ๊ตฌํ |
ํด๋ ๊ตฌ์กฐ ๋ณด๊ธฐ
๐ฆSO2ZY_FE
โฃโ src
โ โฃโ App.css
โ โฃโ App.tsx
โ โฃโ assets
โ โ โฃโ fonts
โ โ โ โโ GmarketSansTTFLight.ttf
โ โ โโ images
โ โ โฃโ check.svg
โ โ โฃโ chevron-down.svg
โ โ โฃโ footer_github_black_icon.png
โ โ โฃโ home.png
โ โ โฃโ hotelDefaultImg.png
โ โ โฃโ hotelDefaultImg2.png
โ โ โฃโ house.svg
โ โ โฃโ mainLogo.svg
โ โ โฃโ mainLogoThree.png
โ โ โฃโ mainLogoTwo.svg
โ โ โฃโ map.svg
โ โ โฃโ shoppingBag.png
โ โ โฃโ sort-down.svg
โ โ โโ sort-up.svg
โ โฃโ components
โ โ โฃโ Calendar
โ โ โ โฃโ Calendar.tsx
โ โ โ โโ index.ts
โ โ โฃโ common
โ โ โ โฃโ Card
โ โ โ โ โฃโ Card.tsx
โ โ โ โ โโ index.ts
โ โ โ โฃโ Footer
โ โ โ โ โฃโ Footer.tsx
โ โ โ โ โโ index.ts
โ โ โ โฃโ Header
โ โ โ โ โฃโ Header.tsx
โ โ โ โ โโ index.ts
โ โ โ โฃโ Item
โ โ โ โ โฃโ index.ts
โ โ โ โ โโ Item.tsx
โ โ โ โฃโ Loading
โ โ โ โ โฃโ index.ts
โ โ โ โ โโ Loading.tsx
โ โ โ โฃโ NotFound
โ โ โ โ โฃโ index.ts
โ โ โ โ โโ NotFound.tsx
โ โ โ โโ ScrollToTop
โ โ โ โฃโ index.ts
โ โ โ โโ ScrollToTop.tsx
โ โ โฃโ Modal
โ โ โ โฃโ index.ts
โ โ โ โโ Modal.tsx
โ โ โฃโ PriceSlider
โ โ โ โฃโ index.ts
โ โ โ โโ PriceSlider.tsx
โ โ โฃโ SelectPeople
โ โ โ โฃโ index.ts
โ โ โ โโ SelectPeople.tsx
โ โ โโ SelectRegion
โ โ โฃโ index.ts
โ โ โโ SelectRegion.tsx
โ โฃโ hooks
โ โ โโ a.ts
โ โฃโ index.css
โ โฃโ index.tsx
โ โฃโ jsonwebtoken-promisified.d.ts
โ โฃโ pages
โ โ โฃโ cart
โ โ โ โฃโ Cart.page.tsx
โ โ โ โฃโ components
โ โ โ โ โโ getCart.ts
โ โ โ โโ index.ts
โ โ โฃโ confirm
โ โ โ โฃโ Confirm.page.tsx
โ โ โ โโ index.ts
โ โ โฃโ main
โ โ โ โฃโ components
โ โ โ โ โฃโ getPlaces.ts
โ โ โ โ โฃโ mainAllListContainer.tsx
โ โ โ โ โฃโ mainAllListItem.tsx
โ โ โ โ โฃโ mainListContainer.tsx
โ โ โ โ โฃโ mainListItem.tsx
โ โ โ โ โฃโ modalData.ts
โ โ โ โ โฃโ regionModal.tsx
โ โ โ โ โโ regionSelectBtn.tsx
โ โ โ โฃโ index.ts
โ โ โ โโ Main.page.tsx
โ โ โฃโ placeDetail
โ โ โ โฃโ components
โ โ โ โ โโ MapModal.tsx
โ โ โ โฃโ index.ts
โ โ โ โโ PlaceDetail.page.tsx
โ โ โฃโ regionList
โ โ โ โฃโ components
โ โ โ โ โฃโ index.ts
โ โ โ โ โโ Map.tsx
โ โ โ โฃโ index.ts
โ โ โ โโ RegionList.page.tsx
โ โ โฃโ reservation
โ โ โ โฃโ index.ts
โ โ โ โโ Reservation.page.tsx
โ โ โฃโ searchList
โ โ โ โฃโ index.ts
โ โ โ โโ SearchList.page.tsx
โ โ โฃโ signIn
โ โ โ โฃโ components
โ โ โ โ โโ SignIn.tsx
โ โ โ โโ index.ts
โ โ โโ signUp
โ โ โฃโ components
โ โ โ โโ SignUp.tsx
โ โ โโ index.ts
โ โฃโ react-app-env.d.ts
โ โฃโ recoil
โ โ โฃโ atom.ts
โ โ โฃโ regionList.ts
โ โ โฃโ regionModal.ts
โ โ โโ searchList.ts
โ โฃโ reportWebVitals.ts
โ โฃโ styles
โ โ โฃโ globalStyles.ts
โ โ โโ theme.ts
โ โโ utils
โ โฃโ getData.ts
โ โฃโ registerFunction.ts
โ โฃโ textLength.ts
โ โฃโ useFormatDate.ts
โ โโ useIntersectionObserver.ts
โฃโ tsconfig.json
โโ tsconfig.paths.json
์ด๋ฆ | ๋ด์ฉ |
---|---|
์ด์น์ค | ํ์คํ ํํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํ๋ค์๋ ๊ฒ์ ๋ค์ 3๊ฐ์ง์๋ค. 1. API ๋ช
์ธ ์ํต ๋ฐฉ์, 2. ๊ณ์ ๋ฐ๋๋ BE ๋ฐ์ดํฐ ๋ฐ ๋ก์ง ๊ตฌ์กฐ, 3. BE ์ธ์๋ค์ ์์ฌ์ด ์ปค๋ฎค๋์ผ์ด์
. ์ฐ์ , ๋ ธ์ ์ API ๋ช ์ธ๋ฅผ ํ๋ค๋ณด๋, ์คํ์ ๋ฐ ๋๋ฝ์ด ์กด์ฌํ์๊ณ , ์ต์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ธ๊ณ , BE ์์ ์๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก ์์๋๋ ๋จ์ ์ด ์์๋ค. ๋ฐ๋ผ์ Swagger ๋๋ REST Docs๋ฅผ ๊ถ์ฅํ๊ณ , ์ด๋ฅผ BE ์ธก์์ ๋ฐ์๋ค์์ผ๋, ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ์ง ์์ ๊ฒ ๊ฐ์ ์์ฌ์ ๋ค. ๋ค์์ผ๋ก, MSW๋ฅผ ๋์ ํ์ฌ BE๊ฐ ์๋ฒ ๋ฐฐํฌํ์ง ์์๋ ๋ชฉ ๋ฐ์ดํฐ๋ฅผ ํตํด API ๋ก์ง์ ๋ฏธ๋ฆฌ ์งค ์ ์์์ผ๋, ๊ณ์ BE ๋ฐ์ดํฐ ๋ฐ ๋ก์ง ๊ตฌ์กฐ๊ฐ ๋ฐ๋์ด์ response๊ฐ ์ด๋ค์์ผ๋ก ์ฌ ์ง ์ฅ๋ดํ ์ ์์๋ค. ๋ฐ๋ผ์ FE ์ธก์์ ์์์ ์ผ๋ก ์ถ์ธกํ์ฌ MSW ํ์ ๊ณ ๋ คํ์ด์ผ๊ณ , ๋์ค์ ์ค์ ๋ก ๋ฐ์ response์ ์ฐจ์ด๊ฐ ์์ด์ ์์ ์ ๊ฑฐ๋ญํด์ผ ํ์๋ค. ๋ง์ง๋ง์ผ๋ก๋ BE ์ธ์๋ค์ ์์ฌ์ด ์ปค๋ฎค๋์ผ์ด์ ์ด๋ค. BE ์ธ์๋ค ์ค ์๋ก ๊ฒน์น๋ DB ๋ฐ ๋ก์ง์ ๋ด๋นํ ์ธ์๋ผ๋ฆฌ ์์ดํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ์์ ํ์๊ณ , ์ด๋ฅผ ํ๋๋ก ํตํฉํ๋๋ผ ์ ์ฒด์ ์ธ ์์ ์๊ฐ์ด ์ฆ๊ฐํ๋ค. ๋ํ, BE ์ธก์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ๋ก์ง์ ๋ฏธ๋ฆฌ FE์ ๊ณต์ ํ์ง ์์๋ค. ๋ฏธ๋ฆฌ ์ํตํ๋ค๋ฉด ์ด์ ๋ง์ถฐ MSW๋ฅผ ๋ ๋ํ ์ผํ๊ฒ ๊ตฌ์ฑํ ์ ์์์ ํ ๋ฐ ๊ทธ๋ฌ์ง ๋ชปํด, ์ถํ ๋์ฒ๊ฐ ์ด๋ ค์์ก๋ค๋ ์ ์์๋ ์์ฌ์ ๋ค. ํํธ, ์ด๋ฒ ํ์คํ ํ๋ก์ ํธ๋ฅผ ํตํด MSW, ์ปค๋ฎค๋์ผ์ด์ , ์ด์ํธ๋ํน, react-query ๋ฑ์ ๊ธฐ์ ์คํ ๋ฐ ๋ฅ๋ ฅ์ ์ป์ ์ ์์ด์ ์ข์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ธ๊ธํ ์์ฌ์ ๋ ์ ๋ค์ ํตํด, ์์ผ๋ก์ ํ์ ์์๋ ๋ฏธ๋ฆฌ ์ ๋์ฒํ ์ ์์ผ๋ฆฌ๋ผ๋ ์ ์์๋ ๋ง์กฑํ๋ค. |
๊น๋ฏผ์ | ์ด๋ฒ ํ๋ก์ ํธ๋ก ์ธ ๊ฐ์ง์ ๋ํด ์๊ฐํด๋ณด๊ฒ ๋์์ต๋๋ค. 1) ์ญํ ๋ถ๋ฐฐ ์ญํ ๋ถ๋ฐฐ ๋น์์ ์ธ์์ด ์ ๋ค๋ ์ด์ ๋ก ๊ฒฝ์ค์ ๋ฐ์ ธ ์ค์ํ์ง ์๋ค๊ณ ๋๋ ๋ถ๋ถ์ ์์จ๋ก ๋์๋๋ฐ, ํ๋ฐ์ผ๋ก ๊ฐ ์๋ก ๊ฐ์ ์ด์์ ๋ชฐ์ ํ๋ค๋ณด๋ ์์จ๋ก ๋์๋ ๋ถ๋ถ๋ค์ ์๋์ ์ผ๋ก ์ํํ๋ ๊ฒ ๊ฐ์ ์์ฝ์ต๋๋ค. ์์ธํ ๋ ผ์๊ฐ ์ฅ๊ธฐ์ ์ผ๋ก ๋ณด๋ฉด ๋ํ ์ผ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค๋ ๊ฒ์ ๋ ๊นจ๋ซ๊ฒ ๋์์ต๋๋ค. 2) ์ํต์ ์ค์์ฑ ๋ฐฑ์๋ ๋ด์์ ๊ฐ์ ๋ก์ง์ ๋งก๋ ๋ถ๋ถ๋ค์์๋ ๊ฐ์ ๋ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ์ฃผ์๊ณ , ์ด๋ก ์ธํด ๋์์์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋ฐ๋์ด ๋ง๊ฐ๋ ๊น์ง๋ api๊ฐ ๊ณ์ ์์ ๋์ด์ ์์ฌ์ ์ต๋๋ค. ๋, ๋ฐฑ์๋์ ํ๋ก ํธ์๋๊ฐ ํ์๋ฅผ ์งํํ์์๋ ๋ถ๊ตฌํ๊ณ , ์ด๋ฅผ ๊ณ ๋ ค ํ์ง ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฃผ์ด์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๊ณ์ ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด, ์ํต์ ์ค์์ฑ์ ๋์ฑ๋ ๊นจ๋ซ๊ฒ ๋์์ต๋๋ค. 3) ๋ฆฌ๋ ๋๋ง๊ณผ ์ต์ ํ์ ๋ํ ์ค์์ฑ ๋น๋๊ธฐ์ ๋ฆฌ๋ ๋๋ง์ผ๋ก ์ธํด ๋ฐฑ์๋์์ ์ฌ๋ฌ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋์์ต๋๋ค. ์ด๋ก ์ธํด ์ต์ ํ์ ๋ํด ๋ ์๊ฐํ๊ฒ ๋์์ต๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ์ ์ธ ๊ฐ์ง์ ๋ํด ์๊ฐํ ๊ณ๊ธฐ๊ฐ ๋์๊ณ , msw๋ฅผ ํ์ฉํ ์ ์์ด ์ข์์ต๋๋ค. react-query์ jest๋ฅผ ์ ๋๋ก ํ์ฉํ์ง ๋ชปํ๊ฑฐ ๊ฐ์์, ๊ณต๋ถํ์ฌ ๋ค์์ ์ข ๋ ํ์ฉํ๋ฉด ์ข์๊ฑฐ ๊ฐ๋จ ์๊ฐ์ด ๋ค์์ต๋๋ค. |
์ง์ข ์ | ์ด๋ฒ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํ๋ค์๋ ์ ์ ์ฒซ ๋ฒ์งธ๋ก 4๋ช
์ด ์งํํ๋ค๋ณด๋ ์ฐ์ ์์๋ฅผ ๋๋์ด ๋ช ๊ฐ์ง ํ์ด์ง๋ฅผ ํ์์๋ก ๋นผ๊ณ ๊ทธ ๋ค ๋จผ์ ๋๋๋ ์ฌ๋์ด ๊ฐ์ ธ๊ฐ๊ธฐ๋ก ํ๋๋ฐ ์๊ฐ๋ณด๋ค ์ง์ฒด๋์ด ๊ธํ๊ฒ ๊ฐ์ ธ๊ฐ๋ค๋ณด๋ ์กฐ๊ธํจ์ ๊ธฐ๋ฅ์ ์ข ๋ ์ง์์์๊ฒ ๊ตฌ์ฑํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ๋ค. ๊ฒฐ๊ตญ ๋ฆฌํฉํ ๋ง๋ ๊ฑฐ์ ๊ฐ์ ์์๋๋ฐ ์ด๋ฐ์ ์กฐ๊ธ ๋ ์ญํ ๋ถ๋ฐฐ๋ฅผ ํ์คํ๊ฒ ํ๋๋ผ๋ฉด ์ข ๋ ์ง์์ ์๊ฒ ๊ตฌ์ฑํ ์ ์์์ ๊ฒ ๊ฐ๋จ ์๊ฐ์ด ๋ค์๋ค. ๋ํ ๋ฐฑ์๋์์ ํ์ ์ด ์๊ฐ๋ณด๋ค ์ฌ์ด ์ผ์ด ์๋์ ๊นจ๋ฌ์๋ค. ๊ฐ์ ์๊ฐํ๋ ๋ฐ๊ฐ ๋ฌ๋๊ณ ์ด๋ฅผ ์ํต์ ํตํด ์กฐ์จํด ๋๊ฐ์ด์ผ ํ๋๋ฐ ์๋ก ์ต์์น ์๋ค๋ณด๋ ๋ฏธํกํ ์ ์ด ์์๋ ๊ฒ ๊ฐ๋ค. ๋์ผํ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋ฐฑ์๋์์ ์์ดํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๋๋ฐ ์ด๋ป๊ฒ ๋ชฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ผ ํ ์ง์ ๋ํ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ ๊ฒ ๊ฐ๋ค. ๊ฒฐ๊ตญ ์ด๋ฅผ ๋ค์ ์์ ํ๋๋ฐ ์์ ์๊ฐ์ด ๋์ด๋ฌ๊ณ ๋ง๊ฐ ์ ๋ ์ api๋ฅผ ๋ฐ์์ ์์ ํ๋ค ๋ณด๋ ๋ํ ์ผํ ์ธก๋ฉด์์ ์์ฌ์์ ๋จ๊ฒผ๋ค. ์ด ๋ถ๋ถ ๋ํ ์ํต์ด ์ํํ๋๋ผ๋ฉด ์ข ๋ ์์ํ๊ฒ ํ ์ ์์์ ๋ถ๋ถ์ด๋ ์๊ฐ์ด ๋ค์๊ณ ๋ค์ ํ๋ก์ ํธ์์๋ ์ํต์ ๋ ์์ฃผ ํ๊ณ ์ด๋ฅผ ๋ฌธ์ํ๋ฅผ ํตํด ์๋ก์ ์ดํด๊ฐ ์ผ์นํจ์ ๊ณ์ ํ์ธํด์ผํ๋ค๋ ๊ฒ์ ๋๊ผ๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ์ํต์ ์ค์์ฑ๊ณผ ๊ทธ๋ฆฌ๊ณ ๋ฌดํ ์คํฌ๋กค ๋ฑ๊ณผ ๊ฐ์ ๋ฆฌ์กํธ ์ฟผ๋ฆฌ์ ๋ํด ์ข ๋ ์ดํดํ๋ ๊ณ๊ธฐ๊ฐ ๋์ด์ ์ข์์ผ๋ฉฐ ํ์๋ถ์ ๋์์ ๋ฐ์ MSW๋ ๋ง์ด ๋ฐฐ์๊ฐ ์ ์๋ ์ข์ ํ๋ก์ ํธ์๋ค. ํ ํธ์ผ๋ก ์ค์ค๋ก๊ฐ ์์ง ๋ ๊ณต๋ถํด์ผํจ์ ๋๊ผ๊ณ ๋ค์ ํ๋ก์ ํธ์์๋ ํ ์คํธ ์ฝ๋์ ๋ํ ์ผํ ๋ถ๋ถ์ ๋์น์ง ์๊ธฐ ์ํด ๋จ์ ๊ธฐ๊ฐ๋์ ์ด์ฌํ ๊ณต๋ถํด์ผํจ์ ๋๊ผ๋ค. |
์ฑ๋ฏผ์ | ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํ๋ค์๋ ์ ์ ์ฐ์ ๋ฐฑ์๋์์ ์ํต์ด์๋ค. ์ฒ์ API ๋ช
์ธ๋ฅผ ๋
ธ์
์ ์ ์ด์ ์งํํ์๋๋ฐ ์ต์ ์
๋ฐ์ดํธ๊ฐ ๋๋ ธ๊ณ , ๊ทธ๋์์ ์๊ฐ๋์ ๊ธฐ๋ค๋ ค์ผ๋งํ๋ ์ํฉ๋ค์ด ์๊ฒผ๋ค. ๋ฐ๋ผ์ SWAGGER๋ฅผ ํ์ฉํ์ฌ API์ ๋ช
์ธ๋ฅผ ๋ฌธ์ํํ๊ธฐ๋ก ํ์๋๋ฐ ๋ด ํํธ์ API ์ผ๋ถ๋ถ์ ์์ ๋ ๋ถ๋ถ์ด ์์ด SWAGGER์ ์ฌ๋ฆฌ์ง ์๊ณ ๋
ธ์
์ ํตํด์๋ง API ๋ช
์ธ๋ฅผ ํ์ธํ๋ ๋ฐฑ์๋ ๋ถ์ด๋ ์ปค๋ฎค๋์ผ์ด์
์ด ๋ง์ด ํ์ํ๋ค. response.status ๋ฑ์ด ๋
ธ์
๋ช
์ธ์ ๋๋ฝ๋์์๊ณ ๊ทธ์ ๋ฐ๋ผ ์ฝ๊ฐ ๊ฐ๋ฐ์๊ฐ์ด ์ง์ฐ๋๋ ์ผ์ด ์๊ฒผ๋ค. ๋ค์๋ถํฐ๋ API ๋ช
์ธ์ ๋๋ฝ๋์๊ฑฐ๋ ํ์ํ ๋ถ๋ถ์ ๋ฐฑ์๋์ ๋ฏธ๋ฆฌ ์ํต์ ์ข์ ๊ฒ ๊ฐ๋ค. ์ด๋ฒํ๋ก์ ํธ์์ jwt๋ก๊ทธ์ธ, MSW ๋ฑ์ ์ฒ์์ผ๋ก ํด๋ดค๋๋ฐ ์ด๊ฒ๋ค์ ์ฅ์ ์ ์ ์ ์๋ ์ข์ ๊ฒฝํ์ด์๋ค. ์๋๋ Jest๋ฅผ ํ์ฉํ test๊น์ง ํด๋ณด๊ณ ์ถ์๋๋ฐ ์งํํ์ง ๋ชปํด ์์ฌ์ ๊ณ ๋ ๊ณต๋ถํด์ ๋ค์ ํ๋ก์ ํธ๋ถํฐ๋ jest๋ ํ์ฉํด๋ณด๊ณ ์ถ๋ค. |
์ด๋ฆ | ๋ด์ฉ |
---|---|
์ด์น์ค | 1) ๋ฌดํ ์คํฌ๋กค ์ฒซ ๋ ๋๋ง ์ ์คํฌ๋กค์ด ์๋์ผ๋ก ๊ฐ์ฅ ์๋๋ก ๋ด๋ ค๊ฐ์ผ๋ก์ 1ํ์ด์ง๊ฐ ์๋ 2ํ์ด์ง๋ฅผ ๋ฐํํ๋ ํ์ react-infinite-scroller ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ initialLoad ํ๋กํผํฐ๋ฅผ false๋ก ์ค์ ํจ์ผ๋ก์, ์ด๊ธฐ ๋ ๋๋ง ์ loadMore ํจ์๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง ์๋๋ก ํ์ฌ ํด๊ฒฐ 2) ๋ค๋ก๊ฐ๊ธฐ ์, ํด๋น ์ง์ญ์ ๋ฐ์ดํฐ๊ฐ refetching ๋์ง ์๋ ์ด์ ์ ํ ์ง์ญ์ ์ธ์ ์คํ ๋ฆฌ์ง๋ก ๋ฐฐ์ด ๋ฐ ์คํธ๋ง ํํ๋ก ์ ์ฅ ํ react-query์ queryKey์ ๊ฐฑ์ ํ์ง๋ง, useLocation์ ํตํด ๊ฐ์ ํ๋ ๊ฒ์ด ๋์ฑ ๊ฐํธํ๊ณ ํจ์จ์ ! |
๊น๋ฏผ์ | 1) ๋น๋๊ธฐ ์ฝ๋๋ก ์ธํด ๋ฆฌ๋ ๋๋ง์ด ๋์๊ณ , ์ด ๋ฆฌ๋ ๋๋ง์ผ๋ก ์ธํด์ ์์ฒญ ์ค๋ ๋๊ฐ db์ ์ ์ฅ๋๊ธฐ ์ ์ ๋๋ฒ์งธ ์์ฒญ์์ ์ ์ผ์ฑ์ ๊ฒ์ฆํ๋ ๋ก์ง์ ํต๊ณผํด๋ฒ๋ฆฌ๋ ๋ฌธ์ ์, db์ ๋ฝ์ด ๊ฑธ๋ฆด ์ ์๋จ ๋ฌธ์ ๊ฐ ๋ฐ์ post๊ฐ ๋ ์ดํ์ ํด๋ฆญ๋ ๊ฐ์ ์ํ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๊ฒ async/await๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ ํ์๋๋, ๋ฆฌ๋ ๋๋ง ๋ฌธ์ ๊ฐ ํด๊ฒฐ 2) ๋ฆฌํฉํ ๋ง๋ ์์ธํ์ด์ง์์ ๋ ์ง/์ธ์์ ์ ํ ์กฐํ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ก์ง์ ์ถ๊ฐํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ํด ๊ณ ๋ฏผ ๊ธฐ์กด์ ๋ฉ์ธ์์ ๋์ด์ฌ๋ location.state๋ก ๋ฐ์์๊ณ , ์์ธ์์๋ recoil๊ฐ์ผ๋ก ๊ด๋ฆฌํ์. location.state์ ๋ค๋ก๊ฐ๊ฑฐ๋ ์์ผ๋ก ๊ฐ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ ๋ผ๊ฐ๋ฏ๋ก ์ด ๋ชจ๋ ๊ฒ์ ๊ณ ๋ คํด์ผํจ |
์ง์ข ์ | 1) ์ฅ๋ฐ๊ตฌ๋ ์ฒดํฌ๋ฐ์ค๋ก ํํฐ๋ง์ ํด์ค ๋ ๊ฐ๊ฐ์ ์์ดํ
๋ค์ด ๊ฑธ๋ฌ์ง๊ฒ ํด์ผ ํ๋๋ฐ ๊ฐ์ ์์์์ ๋์ผํ ๋ฃธ์ ๋ ๋ฒ ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐ ํ์ ๋ ํํฐ๋ง์ด ์๋๋ ํ์ roomCartId๋ผ๋ ๊ณ ์ ์ ๊ฐ์ ๋ฐฑ์๋์๊ฒ ๋ฐ์์์ ์ด๋ฅผ ํํฐ๋ง ํด์ฃผ์๋ค. 2) ์ฒดํฌ๋ฐ์ค ์ ํ/ํด์ ๊ธฐ๋ฅ ๊ตฌํ๊ณผ ์ด๋ฅผ ์์ฝ ํ์ด์ง๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค์ผ ํ๋ ๋ถ๋ถ ์ฒดํฌ๋ฐ์ค ์ ํ/ํด์ ๋ฅผ ์ด๋ ต์ง ์๊ฒ ์๊ฐํ์ง๋ง ๋ง์ ๋ฐฑ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ์ด๋ฅผ ์ฒดํฌํด์ ๋ฐ์ดํฐ๋ก ๋๊ฒจ์ค์ผ ํ๋ ๊ณผ์ ์์ ์ ๋ง ๋ง์ด ํ๋ค์๋ค. ์ด ๊ณผ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ๋ค์ ์ค์์ฑ์ ๊นจ๋ฌ์๊ณ map ํจ์๋ถํฐ .find, .reduce, .forEach ๋ฑ ๊ธฐ๋ณธ๊ธฐ์ ์ค์์ฑ์ ๊นจ๋ฌ์๋ค. |
์ฑ๋ฏผ์ | 1) ํ ํฐ์ decode ํ๊ธฐ์ํด jsonwebtoken-promisified library๋ฅผ ์ค์นํด์ ์ฌ์ฉํด์ผ ํ๋๋ฐ error๊ฐ ๋ ์ reference๋ค์ ์ฐธ์กฐํ์ฌ craco.config.js๋ฅผ ์์ ํ๋๋ฐ๋ error๊ฐ ํด๊ฒฐ๋์ง ์์๋ค. config.js ๊ทธ๋ฅ ๋ณ์๊ฐ์ ์ ์ด์ผํ๋๋ฐ ๊ฐ์ฒด์์ ๋ณ์ ๋ฃ์ด์ ์๊ธด ๊ฐ๋จํ ์ด์์์ง๋ง ํ์์ webpack ์ธํ ์ ๋ํด ๋ฌด์งํ๊ธฐ ๋๋ฌธ์ ํด๊ฒฐํ๋๋ฐ ๋ง์ ์๊ฐ์ ์๋นํ๋ค. ์ด๋ฒ ์ด์๋ฅผ ํตํด webpack ์ธํ ์ ๋ํด ์์ธํ ๊ณต๋ถํด์ ์๊ฒ๋์๋ค. |
์ด๋ฆ | ๋ด์ฉ |
---|---|
์ด์น์ค | ๋ฌดํ ์คํฌ๋กค ์ฒซ ๋ ๋๋ง ์ ์คํฌ๋กค ๊ฐ์ฅ ์๋๋ก ๋ด๋ ค๊ฐ๋ ํ์ ํด๊ฒฐ ํจ์ ๋ชจ๋ํ, ์ปดํฌ๋ํธํ, ๋ถํ์ํ ์ฝ๋ ์ญ์ ๋ฅผ ํตํด ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์ ์ฉ์ด |
๊น๋ฏผ์ | ์์ธํ์ด์ง์์ ๋ฌ๋ ฅ ๋ชจ๋ฌ๊ณผ ์ธ์์ ๋ชจ๋ฌ ์ถ๊ฐํด์, ๋ ์ง/์ธ์์ ์ ํ ์กฐํ ๊ฐ๋ฅํ๊ฒ ์ถ๊ฐ ๋ฆฌ๋ ๋๋ง ์ต์ํ๋ฅผ ์ํ ์ฝ๋ ์ต์ ํ(useCallback), ๋ถํ์ํ ์ฝ๋ ์ค๋ณต์ ๋ฌถ์ด์ฃผ๊ธฐ |
์ง์ข ์ | post , delete ๊ด๋ จ api ํธ์ถ useMutation์ผ๋ก ์ฝ๋ ๊ฐ์ ์ฅ๋ฐ๊ตฌ๋์์ ์์ดํ ํด๋ฆญ ์ ์ญ์ ๊ธฐ๋ฅ ์ถ๊ฐ |
์ฑ๋ฏผ์ | ๋ฆฌํ๋ ์ฌํ ํฐ ์ฌ๋ฐ๊ธ ์๋ฌ ํธ๋ค๋ง ์ฝ๋ ๋ฆฌํฉํ ๋ง ,์ผ๋ถ ์คํ์ผ์์ |