| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- ์ฝ๋์ #ํ๋ก ํธ์๋ #๋ถํธ์บ ํ #ํ๋ก์ ํธ
- ์ฝ๋์ #ํ๋ก ํธ์๋ #๋ถํธ์บ ํ
- ํ๋ก ํธ์๋
- ์ ๋ฐ๋ฏธ #udemy #์ ์ง์ฝํฌ๋น #์ค๋์ดํผํฉํ ๋ฆฌ #์ธ์ฌ์ด๋์์ #๋ฏธ๋๋ด์ผ์ผ๊ฒฝํ #ํ๋ก์ ํธ์บ ํ #ํฌํธํด๋ฆฌ์ค๊ณผ์ #uiux๋์์ธ #uiux๋์์ด๋ #๋์์ด๋๊ต์ก #๋์์ด๋ํฌํธํด๋ฆฌ์ค
- ์ฝ๋์
- ๋ถํธ์บ ํ
- Today
- Total
๐ฑ
๊ณ ๊ธ ํ๋ก์ ํธ: GlobalNomad ๋ณธ๋ฌธ
๊ณ ๊ธ ํ๋ก์ ํธ: GlobalNomad
soo2051 2025. 3. 21. 22:59๐ข ํ๋ก์ ํธ ์๊ฐ
- ํ๋ก์ ํธ ์ธ์ : ํ๋ก ํธ์๋ 5๋ช
- ๊ธฐ๊ฐ : 25.01.17 - 25.02.26
- ํ๋ก์ ํธ : ์ฌ์ฉ์๊ฐ ์ฒดํ์ ๋ฑ๋กํ๊ณ ์์ฝํ ์ ์๋ ์จ๋ผ์ธ ์ฒดํ ์์ฝ ์๋น์ค
- GitHub: https://github.com/codeitFE11-part4-team2/globalnomad
- ํ์ : GitHub, Notion, Discord
- ๊ธฐ์ ์คํ : React, Next.js(App Route), Tailwind CSS
๐ฉ๐ป๐ป ๋ด ์ญํ
- ํ์ด์ง๋ค์ด์ ๊ณตํต ์ปดํฌ๋ํธ ๊ตฌํ
- ์ฒดํ ์์ธ ํ์ด์ง ๊ตฌํ
๐ป ํ๋ก์ ํธ ๊ณผ์
๐ API ์ฐ๋ – Swagger ๊ธฐ๋ฐ ๋ฐฑ์๋ API ์ฌ์ฉ
์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ฝ๋์ ์ธก์์ ์ ๊ณตํ Swagger ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ API๋ฅผ ์ฌ์ฉํ์ต๋๋ค. Swagger ๋ฌธ์๋ ๋ช ์ธ๊ฐ ์ ์ ๋ฆฌ๋์ด ์์๊ธฐ ๋๋ฌธ์, ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๊ณ ํ๋ก ํธ์๋์์ ํ์ํ ์์ฒญ์ ๊ตฌํํ ์ ์์์ต๋๋ค.
๐งฉ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์ ์ญํ ๋ถ๋ด
ํ๋ก์ ํธ๋ ๋ค์๊ณผ ๊ฐ์ ํ์ด์ง ๋จ์๋ก ๊ตฌ์ฑ๋์ด ์์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ ์ค์ฌ์ผ๋ก ๋ถํ ํ์ฌ ๊ฐ๋ฐํ์ต๋๋ค.
- ๋ฉ์ธ ํ์ด์ง
- ๋ก๊ทธ์ธ/ํ์๊ฐ์ ํ์ด์ง
- ์ฒดํ ์์ธํ์ด์ง
- ๋ด ์ ๋ณด
- ํ๊ธฐ ์์ฑ
- ์์ฝ ๋ด์ญ/๊ด๋ฆฌ
- ์ฒดํ ๋ฑ๋ก/๊ด๋ฆฌ/์์
- ์์ฝ ํํฉ
์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ณ ๋ คํ์ฌ ๊ธฐ๋ฅ ๋จ์๋ก ๋๋์์ผ๋ฉฐ, ๊ฐ ๊ธฐ๋ฅ๋ณ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํตํด ํ์ผ ๊ด๋ฆฌ๋ฅผ ์ฒด๊ณํํ์ต๋๋ค.
๐ ๋ฌธ์ ๋ฐ ํด๊ฒฐ ๊ณผ์
๋ฌธ์ (1) - ์ฒดํ ์์ฝ ํ๋ฆ ์ค๊ณ์ ๋ณต์ก์ฑ
1. ๋ฌธ์
์ฒดํ ์์ฝ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ ๋ณตํฉ์ ์ธ ์๊ตฌ์ฌํญ์ ๋ง์กฑ์์ผ์ผ ํ์ต๋๋ค:
- ์ฌ์ฉ์๊ฐ ๋ ์ง, ์๊ฐ, ์ธ์์ ์ ๋ ฅํด์ผ๋ง ์์ฝ ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑ
- PC, ํ๋ธ๋ฆฟ๊ณผ ๋ชจ๋ฐ์ผ UI๋ฅผ ๋์์ ๊ณ ๋ คํ์ฌ UX๋ฅผ ์ค๊ณ
- ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์์ฝํ ์๊ฐ๋๋ ์์ฝ ๋ถ๊ฐ๋ฅํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ช ํํ ์๋ดํ ์ ์์ด์ผ ํจ
ํนํ ์ฌ์ฉ์์ ์์ฝ ๋ด์ญ์ ์ ์ธํ ์๊ฐ๋ง์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ฐฑ์๋์์ ์ ๊ณตํ๋ ๋ API (์ ์ฒด ์์ฝ ๊ฐ๋ฅ ์๊ฐ, ๋์ ์์ฝ ๋ด์ญ)๋ฅผ ๋น๊ตํ์ฌ UI์ ๋ฐ์ ๊ฐ๋ฅํ ์๊ฐ๋ง ํํฐ๋งํ๋ ๊ณผ์ ์ด ํ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋น๊ต ๋ก์ง์ ๋จ์ํ์ง ์์์ต๋๋ค. ๋ API๋ ๋ณ๋๋ก ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ๋น๋๊ธฐ ์์ฒญ ๊ฐ ํ์ด๋ฐ ๋ณด์ฅ, ๋ฐ์ดํฐ ๋๊ธฐํ, ๊ทธ๋ฆฌ๊ณ ํ์์ด ๋ค๋ฅธ ์๊ฐ ์ ๋ณด ๋น๊ต ๋ก์ง์ ์ง์ ๊ตฌํํด์ผ ํ๊ณ , ๊ทธ ๊ณผ์ ์์ UI์ ์ํ์ ์ผ์น๊ฐ ๊ผฌ์ด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
2. ํด๊ฒฐ๋ฐฉ์
์์ฝ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์์, getAvailableSchedules()๋ก ์ ์ฒด ์์ฝ ๊ฐ๋ฅ ์๊ฐ๋๋ฅผ ๊ฐ์ ธ์ค๊ณ , fetchMyReservations()๋ฅผ ํตํด ์ฌ์ฉ์์ ๊ธฐ์กด ์์ฝ ๋ด์ญ๋ ํจ๊ป ๋ถ๋ฌ์์ต๋๋ค. ์ดํ format๊ณผ filter๋ฅผ ํ์ฉํ์ฌ ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๊ณ , ์ค๋ณต๋๋ ์๊ฐ๋๋ฅผ ์ ๊ฑฐํ ๋ค ์ค์ ๋ก ์์ฝ ๊ฐ๋ฅํ ์๊ฐ๋ง UI์ ํ์ํ๋ ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ๋ฌธ์ ์ ๋น๊ต ๋ก์ง์ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ํํฐ๋ง์ด ์ ์์ ์ผ๋ก ์๋ํ์ง ์์๊ณ , ์ํ๋ ๋๋ก UI์์ ์ฌ์ ์ ์์ฝ ๋ถ๊ฐ ์๊ฐ์ ์ ๊ฑฐํ๋ ๋ฐ์๋ ์คํจํ์ต๋๋ค. ์ด์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ ์ฒญํ ์๊ฐ๋๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ, ์์ฝ ์๋ ์์ ์์ alert()์ ํตํด ๋ถ๊ฐ๋ฅํ๋ค๋ ์๋ด ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ๋์ฒดํ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ์์ฝ ๊ฐ๋ฅ ์๊ฐ๋๋ฅผ ํํฐ๋งํ๋ ค๊ณ ์๋ํ์ต๋๋ค:
getAvailableSchedules()๋ฅผ ํตํด ์ ์ฒด ์์ฝ ๊ฐ๋ฅ ์๊ฐ๋๋ฅผ ๋ฐ์์ค๊ณ , fetchMyReservations()๋ฅผ ํตํด ํ์ฌ ์ฌ์ฉ์์ ์์ฝ ๋ด์ญ์ ๋ฐ์์์ต๋๋ค. ์ดํ ๋ ๋ฐ์ดํฐ์ ์ format()๊ณผ filter() ๋ฑ์ ์ฌ์ฉํด ๋ ์ง ๋ฐ ์๊ฐ ํ์์ ๋ง์ถ๊ณ , ์ค๋ณต๋ ์๊ฐ๋๋ฅผ ์ ๊ฑฐํ ๋ฆฌ์คํธ๋ฅผ UI์ ํ์ํ๋ ค๊ณ ํ์ต๋๋ค. ํ์ง๋ง ์ด ์ ๊ทผ์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ์์์ต๋๋ค
- ๋ ๋น๋๊ธฐ ์์ฒญ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์: UI๊ฐ ๋จผ์ ๋ ๋๋ง๋๊ฑฐ๋, ํ๋์ ๋ฐ์ดํฐ๊ฐ ๋ฆ๊ฒ ๋์ฐฉํ๋ฉด์ null, undefined, ํน์ ๋น ๋ฐฐ์ด ์ํ๋ก ์๋ชป๋ ํํฐ๋ง์ด ์ผ์ด๋จ
- ํ์ ๋ถ์ผ์น์ ๋น๊ต ๋ก์ง์ ๋ณต์ก์ฑ: ์๊ฐ ์ ๋ณด๊ฐ ๋จ์ ๋ฌธ์์ด์ด ์๋ startTime, endTime ์์ผ๋ก ์ ๊ณต๋์ด, ๋ ๋ฆฌ์คํธ๋ฅผ ๋น๊ตํ๋ ๋ก์ง์ด ๋จ์ํ format()์ด๋ filter()๋ง์ผ๋ก๋ ์์ ์ ์ผ๋ก ์๋ํ์ง ์์
๊ฒฐ๊ณผ์ ์ผ๋ก UI์์ ์์ฝ ๊ฐ๋ฅํ ์๊ฐ๋ง ๋ฏธ๋ฆฌ ์ ๊ฑฐํ๋ ๋ฐ ์คํจํ์ผ๋ฉฐ, ๋์ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์์ฝํ ์๊ฐ๋๋ฅผ ์ ํํ ๊ฒฝ์ฐ ์์ฝ ์๋ ์์ ์์ alert()์ผ๋ก ์๋ดํ๋ ๋ฐฉ์์ผ๋ก ์ ํ์ ๊ฑธ์ด์ผ ํ์ต๋๋ค.
3. ๊ฒฐ๊ณผ
์์ฝ ํ๋ฆ์ ์ฃผ์ ๋ถ๋ถ์ ๋๋ถ๋ถ ์ ์์ ์ผ๋ก ๋์ํ์ง๋ง, ์ฌ์ฉ์ ์์ฝ ๋ด์ญ๊ณผ ์ ์ฒด ์ค์ผ์ค์ ์์ ํ ๋น๊ตํด ์ฌ์ ์ ํํฐ๋งํ๋ ๋ก์ง์๋ ์คํจํ์ต๋๋ค. ๋์ ์์ฝ ๋จ๊ณ์์ alert๋ฅผ ํตํด ์์ฝ ๋ถ๊ฐ๋ฅ ์๋ด๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ ๋ง๋ฌด๋ฆฌํ์ต๋๋ค.
→ ๊ฐ์ ๋ฐฉํฅ
๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๊ฐ์ ํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๊ณ ํ๋จํ์ต๋๋ค:
- React Query์ ๋น๋๊ธฐ ํ๋ฆ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฉ
useQuery๋ฅผ ์ฌ์ฉํ์ฌ ๋ API(getAvailableSchedules, fetchMyReservations)๋ฅผ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํธ์ถํ๋, ๋ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก fetch๋์์ ๋์๋ง ๋ ๋๋ง ๋๋ ํํฐ๋ง ๋ก์ง์ ์คํํ๋๋ก ๊ตฌ์ฑํฉ๋๋ค. - React Query์ ์บ์ฑ ๊ธฐ๋ฅ ํ์ฉ
๋์ผํ ์ฌ์ฉ์ ํน์ ๋์ผํ ์ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ณตํด์ ์์ฝ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ, React Query๊ฐ ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๊ณ ์ฌ์์ฒญ์ ๋ฐฉ์งํ๊ฑฐ๋ ์ต์ํํ์ฌ ๋ถํ์ํ ๋ก๋ฉ๊ณผ ์ค๋ณต ์์ฒญ์ ์ค์ผ ์ ์๋๋ก ํฉ๋๋ค. - ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ์ฐจ์ด๋ฅผ ๋ช
ํํ ๋ถ์ํ๊ณ ๋น๊ต ๋ก์ง์ ๋ฆฌํฉํ ๋ง
๋จ์ํ format()๊ณผ filter()๋ก ๋น๊ตํ๋ ๊ฒ์ด ์๋๋ผ, ์์ฝ ๊ฐ๋ฅ ์๊ฐ์ { date, times: [{ startTime, endTime }] } ๊ตฌ์กฐ, ๋ด ์์ฝ ๋ด์ญ์ { date, startTime, endTime } ๊ตฌ์กฐ์ด๋ฏ๋ก ๋ ์ง + ์๊ฐ ์กฐํฉ์ ๊ธฐ์ค์ผ๋ก ์ค์ฒฉ ๋ฃจํ ํน์ ํด์๋งต ๋ฑ์ผ๋ก ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด ๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค์ฒฉ ๋ฃจํ๋ ๋ ๋ฐฐ์ด์ ๊ฐ๊ฐ ์ํํ๋ฉด์ ํ๋ํ๋ ์ง์ ๋น๊ตํ๋ ๋ฐฉ์์ด๊ณ , ํด์๋งต์ ๋น๊ต ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์ Map ํํ๋ก ์ ๋ฆฌํด๋๊ณ , ๋น ๋ฅด๊ฒ ์กฐํํ๋ ๋ฐฉ์์ผ๋ก, ์ด๊ธฐ์๋ ์ค์ฒฉ ๋ฃจํ๋ ๊ด์ฐฎ์ง๋ง, ์กฐ๊ธ ๋ณต์กํ๋๋ผ๋ ํด์๋งต์ ์ ํํ์ฌ ๋ฆฌํฉํ ๋งํด ๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. - ํํฐ๋ง๋ ๋ฐ์ดํฐ๋ง AvailableTimes ์ปดํฌ๋ํธ์ ์ ๋ฌ
๋ฌธ์ (2) - ํ๊ธฐ ๋ชฉ๋ก ๋ก๋ฉ ์ฑ๋ฅ ๋ฐ ํ์ด์ง๋ค์ด์
1. ๋ฌธ์
ํ๊ธฐ๊ฐ ๋ง์์ง์๋ก ๋ชจ๋ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ ๋๋งํ๋ฉด ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ์ฌ์ฉ์ ์ ์ฅ์์ ๋ฆฌ์คํธ ํ์์ด ๋ถํธํด์ง ์ ์์์ต๋๋ค. ๋ํ ํ๊ธฐ ํ๊ท ํ์ , ์ด ๋ฆฌ๋ทฐ ์ ๋ฑ ๋ฉํ ์ ๋ณด๋ฅผ ํจ๊ป ์ ๊ณตํด์ผ ํ๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ ๋๋ง ํ๋ฆ์ ๋ถ๋ฆฌ๋ ํ์ํ์ต๋๋ค.
2. ํด๊ฒฐ๋ฐฉ์
ํ๊ธฐ ๋ชฉ๋ก์ ReviewList ์ปดํฌ๋ํธ์์ fetchReviews() API๋ฅผ ํตํด ํ์ฌ ํ์ด์ง ๊ธฐ์ค์ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๋๋ก ๋ถ๋ฆฌํ์์ผ๋ฉฐ, useState์ useEffect๋ฅผ ํ์ฉํด currentPage, totalPages, totalCount, averageRating ๋ฑ์ ์ํ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด์ ํ๊ธฐ ๋ชฉ๋ก๊ณผ ๋ฉํ ์ ๋ณด๋ฅผ ํจ๊ป ๊ตฌ์ฑํ์์ต๋๋ค. ๋ํ, ์ฌ์ฉ์๊ฐ ์ง์ ํ์ด์ง๋ฅผ ๋๊ธธ ์ ์๋๋ก ์ปค์คํ Pagination ์ปดํฌ๋ํธ๋ฅผ ๋์ ํด UX๋ฅผ ๊ฐ์ ํ๊ณ , ํ๊ธฐ ๊ฐ์๊ฐ 3๊ฐ ์ดํ์ผ ๊ฒฝ์ฐ์๋ Pagination์ด ๋ ๋๋ง๋์ง ์๋๋ก ์กฐ๊ฑด๋ถ ์ฒ๋ฆฌ๋ฅผ ์ ์ฉํ์ฌ ๋ถํ์ํ UI ๋ ธ์ถ์ ๋ฐฉ์งํ์์ต๋๋ค.
3. ๊ฒฐ๊ณผ
ํ๊ธฐ ๋ฐ์ดํฐ๊ฐ ๋ง์๋ ํ ํ์ด์ง์ 3๊ฐ์ฉ๋ง ๋ ๋๋ง๋๋๋ก ๊ตฌ์ฑํ์ฌ ๋ ๋๋ง ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฐ๋ ์ฑ์ด ํฅ์๋์๊ณ , ํ์ด์ง๋ฅผ ๋๊ฒจ๊ฐ๋ฉฐ ํ๊ธฐ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํ์ํ ์ ์๋ ๊ตฌ์กฐ๊ฐ ์์ฑ๋์์ต๋๋ค. ๋ํ ํ๊ท ํ์ ๊ณผ ์ด ํ๊ธฐ ์๋ฅผ ์๋จ์ ๋ ธ์ถํจ์ผ๋ก์จ ์ฌ์ฉ์ ์ ๋ขฐ๋ฅผ ๋์ด๋ ํจ๊ณผ๋ ์์์ต๋๋ค.
๋ฌธ์ (3) - ์ด๋ฏธ์ง ๋ ๋๋ง ๋ค์์ฑ ๋ฐ ํ๋ ๊ธฐ๋ฅ
1. ๋ฌธ์
์ฒดํ์ ๋ฑ๋ก๋ ์ด๋ฏธ์ง๊ฐ 1๊ฐ ๋๋ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ๋ ์ด์์์ด ๊นจ์ง๊ฑฐ๋ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ผ๊ด๋์ง ์์ ์ ์์์ต๋๋ค. ๋ชจ๋ฐ์ผ์์๋ ์ฌ๋ผ์ด๋ ๋ฐฉ์, ๋ฐ์คํฌํ์์๋ ์ฌ๋ฌ ์ด๋ฏธ์ง ๋ฐฐ์น๊ฐ ํ์ํ์ผ๋ฉฐ, ์ด๋ฏธ์ง ํด๋ฆญ ์ ํ๋ ๊ธฐ๋ฅ๋ ์๊ตฌ๋์ต๋๋ค.
2. ํด๊ฒฐ๋ฐฉ์
BannerImage ์ปดํฌ๋ํธ์์ ์ด๋ฏธ์ง ๊ฐ์์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋ ์ด์์์ผ๋ก ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ์ ์ฉํ๊ณ , ๋ชจ๋ฐ์ผ์์๋ react-slick ๊ธฐ๋ฐ ์ฌ๋ผ์ด๋๋ฅผ ์ ์ฉํ์ต๋๋ค. ๋ชจ๋ ์ด๋ฏธ์ง์๋ ํด๋ฆญ ์ ํ๋๋๋ ๋ชจ๋ฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ์ต๋๋ค.
3. ๊ฒฐ๊ณผ
๋ชจ๋ฐ์ผ๊ณผ ๋ฐ์คํฌํ ๋ชจ๋์์ ์ผ๊ด๋ UI๋ฅผ ์ ๊ณตํ๋ฉด์ ๋ค์ํ ์ด๋ฏธ์ง ํ์์ด ๊ฐ๋ฅํด์ก๊ณ , ์ฌ์ฉ์๊ฐ ์ฒดํ ์ ๋ณด๋ฅผ ๋ ๊น์ด ์ดํดํ ์ ์๋๋ก ์๊ฐ์ ์ ๋ณด ์ ๋ฌ๋ ฅ์ ๋์ผ ์ ์์์ต๋๋ค.
→ ๊ฐ์ ๋ฐฉํฅ : ํ๋ ๋ชจ๋ฌ์ ์ ๊ทผ์ฑ ํฅ์(ํค๋ณด๋ ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ, ๋ซ๊ธฐ ๋ฒํผ ์ธ ํด๋ฆญ ์ ๋ซ๊ธฐ ๋ฐฉ์ง ์ฒ๋ฆฌ ๋ฑ)์ ์ถ๊ฐ๋ก ๊ณ ๋ คํ ์ ์์.
๋ฌธ์ (4) - ์๋ธ ์ด๋ฏธ์ง ๋ฐฐ์น ๊ตฌ์กฐ์ ๋ฐ๋ณต์ฑ๊ณผ ๋นํจ์จ์ฑ
1. ๋ฌธ์
์ฒดํ ์์ธ ํ์ด์ง์์ ์๋ธ ์ด๋ฏธ์ง์ ์(1~4์ฅ)์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ ์ด์์์ ์ ์ฉํด์ผ ํ์ต๋๋ค.
์ด๋ฏธ์ง๊ฐ 1๊ฐ์ผ ๋ ์ ์ฒด ์์ญ์ ๋จ์ผ ์ด๋ฏธ์ง, 2๊ฐ์ผ ๋ ์ธ๋ก๋ก ๋ถํ , 3๊ฐ์ผ ๋ ์๋จ 1 + ํ๋จ 2, 4๊ฐ์ผ ๋ 2x2 ํํ์ ์ ์ฌ๊ฐํ ๊ฒฉ์ ๋ ์ด์์์ผ๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
2. ํด๊ฒฐ๋ฐฉ์
SubImageBanner ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ด๋ฏธ์ง ์๋ฅผ ๊ธฐ์ค์ผ๋ก if-else ์กฐ๊ฑด ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ , ๊ฐ ์ผ์ด์ค๋ง๋ค div + Image ๊ตฌ์ฑ์ผ๋ก ๋ค๋ฅธ ๋ ์ด์์์ ์๋ ๊ตฌํํ์ต๋๋ค. 2์ฅ, 4์ฅ ์ผ์ด์ค๋ for ๋ฌธ์ผ๋ก ๋ฐ๋ณต ๋ ๋๋ง์ ๊ตฌํํ์ผ๋ฉฐ, 3์ฅ ์ผ์ด์ค๋ ๋ถํ ๋ฐฉ์์ด ๋ ๋ณต์กํด ์ง์ ๋ฐฐ์น ๊ตฌ์กฐ๋ฅผ ๋ช ์ํ์ต๋๋ค. ์ด ๋ก์ง์ ๊ตฌํํ๋ ๊ณผ์ ์์ if ์กฐ๊ฑด๊ณผ for ๋ฌธ์ ๊ฐ ์ผ์ด์ค๋ง๋ค ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ก๊ณ , ์ถํ ์ด๋ฏธ์ง ๋ฐฐ์น๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค๋ ํ๊ณ๊ฐ ์์์ต๋๋ค.
3. ๊ฒฐ๊ณผ
๊ธฐํ๋ ๋ชจ๋ ์ด๋ฏธ์ง ์ผ์ด์ค๋ฅผ ์ ํํ ๊ตฌํํ๊ณ , ์ฌ์ฉ์๋ ์ด๋ฏธ์ง ์์ ๋ฐ๋ผ ์๊ฐ์ ์ผ๋ก ์์ ์ ์ธ ์ฝํ ์ธ ํ์์ด ๊ฐ๋ฅํ์ต๋๋ค. ํนํ ๋ชจ๋ฐ์ผ/PC์์๋ ๋ฐ์ํ์ผ๋ก ์ ์๋ํ๊ณ , ํด๋ฆญ ์ ํ๋ ๋ชจ๋ฌ๊น์ง ์ ๊ณตํ๋ฉด์ ์ ๋ฐ์ ์ธ UX ์์ฑ๋๋ ๋์์ต๋๋ค.
ํ์ง๋ง ์ฝ๋ ๊ตฌ์กฐ๊ฐ ์กฐ๊ฑด ๋ถ๊ธฐ์ ๋ฐ๋ณต ๋ก์ง์ ๊ฒฐํฉ์ผ๋ก ๋ณต์กํ๊ณ , ์ฌ์ฌ์ฉ์ด๋ ํ์ฅ์ ๋ถ๋ฆฌํ ์ ์ด ์์์ต๋๋ค.
→ ๊ฐ์ ๋ฐฉํฅ
๋จ์ํ ๊ตฌํ์ ๋์ด์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ, ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ ๊ฐ์ ์ด ํ์ํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
- Grid ๋๋ Flex ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์ ๊ตฌ์ฑ ๋จ์ํ
- ์ด๋ฏธ์ง ์์ ๋ฐ๋ผ Grid์ grid-template-areas ๋๋ grid-auto-flow ์์ฑ์ ์กฐ์ ํด ๊ตฌํํ ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ์กฐ๊ฑด ๋ถ๊ธฐ ์์ด๋ ๋ฐ๋ณต์ ๊ตฌ์กฐ๋ฅผ ์ ์ธ์ ์ผ๋ก ํํ ๊ฐ๋ฅํฉ๋๋ค. ํนํ 2x2, 1+2 ํํ๋ Grid์์ ์ฝ๊ฒ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- map ๊ธฐ๋ฐ ๋ฐ๋ณต ๋ ๋๋ง ์ ์ฉ
- ํ์ฌ๋ for ๋ฌธ๊ณผ ํ๋์ฝ๋ฉ๋ ์ฝ๋๊ฐ ํผํฉ๋์ด ์๋๋ฐ, ์ด๋ฅผ map์ผ๋ก ์ถ์ํํ๋ฉด ๋ ๊ฐ๊ฒฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๊ตฌ์กฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์ (5) - ์นด์นด์ค ์ง๋ ๊ตฌํ๊ณผ ๋ฆฌ์กํธ ๋ฒ์ ์ถฉ๋
1. ๋ฌธ์
์ฒดํ ์์ธ ํ์ด์ง์์ ์์น ์ ๋ณด๋ฅผ ์๊ฐ์ ์ผ๋ก ์ ๊ณตํ๊ธฐ ์ํด ์นด์นด์ค ์ง๋ API๋ฅผ ์ ์ฉํ๋ ค ํ์ผ๋, react-kakao-maps-sdk ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ React 18 ์ด์๊ณผ ํธํ๋์ง ์์ ๋ ๋๋ง ์ค๋ฅ์ ํ์ ์ถฉ๋์ด ๋ฐ์ํ์ต๋๋ค.
2. ํด๊ฒฐ๋ฐฉ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ๋์ ์ผ๋ก ์ฝ์ ํด ์นด์นด์ค ์ง๋ SDK๋ฅผ ๋ก๋ํ๋ ๋ฐฉ์์ผ๋ก ์ ํํ์ต๋๋ค. useEffect ๋ด๋ถ์์ window.kakao.maps.load()๋ฅผ ์ฌ์ฉํด ์ง๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ฃผ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ขํ ๋ณํ ํ ๋ง์ปค๋ฅผ ํ์ํ๋ ๋ฐฉ์์ผ๋ก ์ง์ ๊ตฌํํ์ต๋๋ค.
3. ๊ฒฐ๊ณผ
React ๋ฒ์ ์ด์๋ฅผ ํด๊ฒฐํ๋ฉด์๋ ์์ ์ ์ธ ์ง๋ ๋ ๋๋ง์ด ๊ฐ๋ฅํด์ก๊ณ , ๋ถํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ์ ์ ๊ฑฐํ ์ ์์์ต๋๋ค. ์ฌ์ฉ์์๊ฒ ์ฒดํ ์์น๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉฐ ์ ๋ณด ์ ๋ฌ๋ ฅ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํ์ต๋๋ค.
๐ ๋ฐฐ์ด ์ /๋๋ ์
1. ์์ฝ ๊ธฐ๋ฅ ํ๋ฆ์ UX ์ค๊ณ์ ์ํ ์ฐ๊ฒฐ ๊ฒฝํ
์ฌ์ฉ์๊ฐ ๋ ์ง → ์๊ฐ → ์ธ์ ์ → ์์ฝ๊น์ง ๋จ๊ณ์ ์ผ๋ก ์งํํ๋ ํ๋ฆ์ ๊ตฌํํ๋ฉด์, ๊ฐ ์ํ ๊ฐ์ ์ฐ๊ฒฐ์ฑ๊ณผ UI ๋ฐ์ ์๋๋ฅผ ์กฐ์จํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํ์ง๋ฅผ ์ค๊ฐํ์ต๋๋ค. ์ฌ์ฉ์ ๊ฒฝํ์ ๊ณ ๋ คํด ์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ฐ ๋ชจ๋ฌ ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๋ฑ์ ์ ์ฉํ๋ฉฐ, UX ์ค์ฌ์ ๋ก์ง ๊ตฌ์ฑ ๋ฐฉ์์ ์ต์ํด์ก์ต๋๋ค.
2. React Query ์ค์ ์ ์ฉ ๊ฒฝํ
์์ฝ ๊ฐ๋ฅ ์๊ฐ๊ณผ ์ฌ์ฉ์ ์์ฝ ๋ด์ญ์ ๋ณ๋ ฌ์ ์ผ๋ก ๋น๋๊ธฐ ํธ์ถํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋๋ง์ ๊ตฌ์ฑํ๋ ๊ณผ์ ์์ React Query์ ์บ์ฑ ๋ฐ ์ํ ๊ด๋ฆฌ ๋ฅ๋ ฅ์ ์ค๊ฐํ์ต๋๋ค. ํด๋น ํ๋ฆ์ ํ์์ ๋์์ ๋ฐ์ ๊ตฌํํ์ผ๋, ์ดํ ๋น๋๊ธฐ ๋ฐ์ดํฐ ํ๋ฆ์ ์ค๊ณ ๋ฐฉ๋ฒ์ ๋ํด ํฐ ์ธ์ฌ์ดํธ๋ฅผ ์ป์ ์ ์์์ต๋๋ค.
3. ๋์ ์ง๋ ๋ฐ ์บ๋ฆฐ๋ ๊ตฌํ์ ํตํ ์ธ๋ถ ๋๊ตฌ ํ์ฉ ๋ฅ๋ ฅ ํฅ์
์ฒดํ ์์ธ ํ์ด์ง์์ ์ฌ์ฉ์๊ฐ ์์น๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์ธํ ์ ์๋๋ก ์นด์นด์ค ์ง๋๋ฅผ ๋์ ํ๋๋ฐ, ๊ธฐ์กด react-kakao-maps-sdk ์ฌ์ฉ ์ React 18๊ณผ์ ํธํ์ฑ ๋ฌธ์ ๋ก ์ธํด ์ง์ script ํ๊ทธ๋ฅผ ํตํด SDK๋ฅผ ๋์ ์ผ๋ก ๋ก๋ํ๊ณ useEffect ๋ด์์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์ ํํ์ต๋๋ค. ๋ํ ์์ฝ ๊ฐ๋ฅํ ๋ ์ง๋ฅผ ํ์ํ๊ธฐ ์ํด react-calendar ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๊ณ , ์์ฝ ๊ฐ๋ฅ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ ์ง ์ ํ UI๊ฐ ๋ฌ๋ผ์ง๋๋ก ์ปค์คํฐ๋ง์ด์งํ์ฌ ์ค์ฉ์ ์ธ ์บ๋ฆฐ๋ UI๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฅ์ ๊ณผ ํ๊ณ๋ฅผ ๋ชจ๋ ๊ฒฝํํ๋ฉด์, ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๊ตฌํ ๋ฐฉ์์ ์ ํํ๋ ๊ฐ๊ฐ๋ ํจ๊ป ์ตํ ์ ์์์ต๋๋ค.
๐ข ์์ฌ์ด ์
1. React Query์ ๋ํ ๋ฏธ์ํจ
์ํ ์บ์ฑ๊ณผ ๋ณ๋ ฌ ๋น๋๊ธฐ ํธ์ถ์ ๊ฐ๋ ฅํ React Query์ ์ฅ์ ์ ์ฒด๊ฐํ์ง๋ง, ์ฌ์ฉ ๊ฒฝํ์ด ๋ถ์กฑํด ์ง์ ํ์ฉ๋ณด๋ค๋ ํ์์ ๊ตฌํ์ ์ฐธ๊ณ ํ๋ ๋ฐ์ ๊ทธ์ณค์ต๋๋ค. ์ดํ์๋ ์ค์ค๋ก ์ํ ๊ด๋ฆฌ ํ๋ฆ์ ์ค๊ณํ๊ณ React Query๋ฅผ ์ ๊ทน ํ์ฉํด๋ณด๊ณ ์ ํฉ๋๋ค.
2. ์ด๋ฏธ์ง ๋ ์ด์์ ์กฐ๊ฑด ์ฒ๋ฆฌ์ ์์ฌ์
์๋ธ ์ด๋ฏธ์ง๊ฐ 1~4์ฅ์ผ ๊ฒฝ์ฐ ๋ฐฐ์น ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋๋ก ์กฐ๊ฑด ๋ถ๊ธฐ๋ฅผ ์ ์ฉํ์ง๋ง, ์ด๋ฅผ ๋ชจ๋ for๋ฌธ๊ณผ ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ก ๊ตฌ์ฑํ๋ฉด์ ์ฝ๋๊ฐ ์ฅํฉํด์ก์ต๋๋ค. ๋ฐ๋ณต๋๋ ์กฐ๊ฑด ์ฒ๋ฆฌ๋ณด๋ค๋ ์ข ๋ ์ ์ธ์ ์ด๊ณ ์ ์ฐํ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํฐ๋งํ ์ฌ์ง๊ฐ ์์๊ณ , ์ดํ ์ ์ง๋ณด์ ์ธก๋ฉด์์๋ ๋ค์ ๋ณต์กํ ๊ตฌ์กฐ๊ฐ ๋ ์ ์ด ์์ฌ์ ์ต๋๋ค.
3. ์์ฝ ์๊ฐ ํํฐ๋ง์ ๋ฐ์ ์คํจ
์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์์ฝํ ์๊ฐ๋๋ฅผ ์ฌ์ ์ ์ ๊ฑฐํ๋ ค๊ณ ํ์ง๋ง ์คํจํ๊ณ ๊ฒฐ๊ตญ ์์ฝ ์๋ ์์ ์ alert๋ก ์๋ดํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ต๋๋ค. ์ด๊ธฐ ๊ธฐํ ๋จ๊ณ์์ API ํ๋ฆ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ ๋ช ํํ ํ์ ํ๋๋ผ๋ฉด UI ๋จ๊ณ์์ ์์ฑ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํํ ์ ์์์ ๊ฒ์ด๋ผ๋ ์์ฌ์์ด ๋จ์ต๋๋ค.
4. ํ์ ์ดํ๋ก ์ธํ ์ผ์ ์ง์ฐ
ํ๋ก์ ํธ ํ๋ฐ๋ถ, ํ ํ์๊ณผ์ ์ฐ๋ฝ์ด ๊ฐ์๊ธฐ ์ด๋ ค์์ ธ ํด๋น ํํธ์ ์งํ์ด ์ผ์์ ์ผ๋ก ์ง์ฐ๋์์ต๋๋ค. ๊ตฌํ ์์ฒด๊ฐ ๋ณต์กํ ๋ถ๋ถ์ ์๋์์ง๋ง, ํ์์ ๋ณต๊ท๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ผ์ ์ด ์กฐ๊ธ ๋ฆ์ถฐ์ก์ง๋ง, ๋คํํ ์ ๋ง๋ฌด๋ฆฌ ํ ์ ์์์ต๋๋ค. ์ฌ์ ์ ํ๋ฆ์ ๋ํ ๊ณต์ ๊ฐ ์ด๋ ์ ๋ ์ด๋ฃจ์ด์ก๊ธฐ ๋๋ฌธ์ ํฐ ๋ฌธ์ ์์ด ๋ง๋ฌด๋ฆฌํ ์ ์์์ง๋ง, ์ผ์ ๋ฆฌ์คํฌ๋ฅผ ์ค์ด๊ธฐ ์ํ ์ฌ์ ๊ณต์ ์ ๋ฐฑ์ ์ฒด๊ณ์ ์ค์์ฑ์ ์ฒด๊ฐํ ์ ์์์ต๋๋ค.
'์ฝ๋์ ์คํ๋ฆฐํธ ํ๋ก ํธ์๋ 11๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ค๊ธ ํ๋ก์ ํธ: Linkbrary (0) | 2025.03.21 |
|---|---|
| ๊ธฐ์ด ํ๋ก์ ํธ: Fandom-k (1) | 2025.03.21 |
| [์ฝ๋์] ํ๋ก ํธ์๋ 11๊ธฐ ์ง์ (0) | 2025.03.18 |