๐Ÿ”ง VIVITRIP ํ”„๋กœ์ ํŠธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… & ํšŒ๊ณ  ๋ชจ์Œ

Kingdwanยท2025๋…„ 4์›” 22์ผ

๐Ÿงฉ VIVITRIP ํ”„๋กœ์ ํŠธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… & ํšŒ๊ณ  ๋ชจ์Œ

React ๊ธฐ๋ฐ˜ ์ฒดํ—˜ ์˜ˆ์•ฝ ํ”Œ๋žซํผ ํ”„๋กœ์ ํŠธ VIVITRIP์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฒช์€ ํ•ต์‹ฌ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…๊ณผ ๊ตฌ์กฐ ์„ค๊ณ„ ํšŒ๊ณ ๋ฅผ ์ •๋ฆฌํ•œ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.
๊ฐ ์ฃผ์ œ๋Š” ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ๊ณผ ํ•ด๊ฒฐ ๊ณผ์ • ์ค‘์‹ฌ์œผ๋กœ ๋‚˜๋ˆ ์กŒ์œผ๋ฉฐ, ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ํฌ์ŠคํŠธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


1๏ธโƒฃ ์ฒดํ—˜ ๋“ฑ๋ก/์ˆ˜์ • ํŽ˜์ด์ง€ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

  • useForm, useFieldArray๋ฅผ ํ™œ์šฉํ•œ ๋‹ค์ค‘ ์ผ์ • ๋™์  ํผ ์ฒ˜๋ฆฌ
  • ์ˆ˜์ •/๋“ฑ๋ก ๋ชจ๋“œ ๋ถ„๊ธฐ (reset, defaultValues) ๋ฐฉ์‹ ๊ตฌ์กฐํ™”
  • ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ, ์‹œ๊ฐ„ ๊ฒน์นจ ๋ฐฉ์ง€ ๋กœ์ง ๊ตฌํ˜„

๐Ÿ‘‰ VIVITRIP1 - ์ฒดํ—˜ ๋“ฑ๋ก/์ˆ˜์ • ํŽ˜์ด์ง€ ํšŒ๊ณ 


2๏ธโƒฃ ๋ฌดํ•œ ์Šคํฌ๋กค ๊ตฌํ˜„ & ํŠธ๋ฆฌ๊ฑฐ ๋ฐฉ์‹ ๋น„๊ต

  • useInfiniteQuery ๊ธฐ๋ฐ˜ ๋ฌดํ•œ ์Šคํฌ๋กค ๊ตฌํ˜„
  • useInView์™€ useIntersectionObserver ์ปค์Šคํ…€ ํ›… ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹ ๋น„๊ต
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ UX ํ๋ฆ„์„ ๊ณ ๋ คํ•œ ํŠธ๋ฆฌ๊ฑฐ ์ „๋žต ํšŒ๊ณ 

๐Ÿ‘‰ VIVITRIP2 - ๋ฌดํ•œ์Šคํฌ๋กค ๊ตฌ์กฐ ์„ค๊ณ„์™€ ๋น„๊ต


3๏ธโƒฃ Button ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ ๋ถ„๊ธฐ ์ตœ์ ํ™”

  • color, size, disabled ๋“ฑ ๋ณต์žกํ•œ ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ถ„๋ฆฌ
  • twMerge, clsx ์กฐํ•ฉ์„ ํ†ตํ•ด Tailwind ํด๋ž˜์Šค ์ถฉ๋Œ ํ•ด๊ฒฐ
  • ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ์Šคํƒ€์ผ ์„ค๊ณ„ ๋ฐฉ๋ฒ• ์ ์šฉ

๐Ÿ‘‰ VIVITRIP3 - ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…


๐Ÿ“ ์ด์ •๋ฆฌ

  • ๋ฐ˜๋ณต๋˜๋Š” ์ปดํฌ๋„ŒํŠธ์™€ ํŒจํ„ด์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์กฐ๊ฑด์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ๋ทฐ ํŠธ๋ฆฌ๊ฑฐ ์ฒ˜๋ฆฌ์—์„œ ์–ป์€ ๊ฒฝํ—˜์„ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€