๐Ÿงฉ ํ† ์Šค Frontend Fundamentals ๋ชจ์˜๊ณ ์‚ฌ ๋ฆฌ๋ทฐ ํ›„๊ธฐ ์ •๋ฆฌ

์ •์†Œํ˜„ยท2025๋…„ 11์›” 25์ผ

ํ”„๋ก ํŠธ์—”๋“œ ์ผ์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
5/10
post-thumbnail

๐Ÿงฉ ํ† ์Šค Frontend Fundamentals ๋ชจ์˜๊ณ ์‚ฌ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๋А๋‚€ ์ 

์•ˆ๋…•ํ•˜์„ธ์š”! ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ •์†Œํ˜„์ž…๋‹ˆ๋‹ค.
์ตœ๊ทผ ์ €๋Š” โ€œํ™•์žฅ์„ฑ ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌ์กฐโ€, โ€œ์‘์ง‘์„ฑ๊ณผ ๋ชจ๋“ˆ์„ฑโ€, โ€œ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌโ€, โ€œ์ถ”์ƒํ™”โ€ ๋“ฑ
ํ•ญ์ƒ ์–ธ๊ธ‰๋˜์ง€๋งŒ ์‹ค์ œ ์ฝ”๋“œ์— ์ ์šฉํ•˜๋ ค ํ•˜๋ฉด ์–ด๋ ค์šด ์ฃผ์ œ๋“ค์— ๋Œ€ํ•ด ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋˜ ์ค‘ ํ† ์Šค Frontend Fundamentals ๋ชจ์˜๊ณ ์‚ฌ์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ๊ณ ,
๋ฆฌ๋ทฐ ๋ผ์ด๋ธŒ๋ฅผ ๋“ค์œผ๋ฉฐ ์ œ๊ฐ€ ๋†“์น˜๊ณ  ์žˆ์—ˆ๋˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„๋“ค์„ ๋‹ค์‹œ ๋Œ์•„๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.


โœจ ์ง„ํ–‰ ๊ณผ์ •

  • 2์‹œ๊ฐ„ ๋‚ด ๊ณผ์ œ ๊ตฌํ˜„
  • PR ์ œ์ถœ
  • Github Discussions์— ์ธ์‚ฌ์ดํŠธ ๊ณต์œ 
  • ์˜ค์ข…ํƒ๋‹˜ & ํ•œ์žฌ์—ฝ๋‹˜์˜
    ๋ผ์ด๋ธŒ ์ฝ”๋”ฉ + ์งˆ์˜์‘๋‹ต + PR ๋ฆฌ๋ทฐ + Discussions ๋ฆฌ๋ทฐ

์งง์€ ์‹œ๊ฐ„์ด์—ˆ์ง€๋งŒ ๋งŽ์€ ๊นจ๋‹ฌ์Œ์„ ์–ป์€ ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.


์•„๋ž˜๋Š” ์ œ๊ฐ€ ๋ฆฌ๋ทฐ๋ฅผ ๋“ค์œผ๋ฉฐ ๊ฐ€์žฅ ํฌ๊ฒŒ ์™€๋‹ฟ์•˜๋˜ ๋ถ€๋ถ„๋“ค์ž…๋‹ˆ๋‹ค.

1. ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ์™€ ์ถ”์ƒํ™” โ€” โ€œ์ถ”์ถœ์ด ์•„๋‹ˆ๋ผ ์ถ”์ƒํ™”๋ฅผ ํ•˜์žโ€

๐Ÿ” ๋ฆฌ๋ทฐ ์ „, ๋‚ด๊ฐ€ ํ–ˆ๋˜ ๋ฐฉ์‹

  • UI ํ™”๋ฉด ๊ตฌ์กฐ๋ฅผ ์˜†์— ๋‘๊ณ  ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ
  • Header, Content ๋“ฑ์„ ๊ฐ๊ฐ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ
  • UI ๋กœ์ง๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง hook์œผ๋กœ ๋ถ„๋ฆฌ
  • ํŒŒ์ผ์ด ๋งŽ์•„์ง€์ž ํด๋” ๊ตฌ์กฐ ๊ณ ๋ฏผ์ด ํ•จ๊ป˜ ์ฆ๊ฐ€(FSD? DDD? )

ํ•˜์ง€๋งŒ ๋ฆฌ๋ทฐ๋ฅผ ๋“ค์œผ๋ฉด์„œ ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

โ€œ์ด ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ๋ณด๊ณ  ์ด ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ค ํŽ˜์ด์ง€์ธ์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„๊นŒ?โ€

์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ณผํ•  ์ •๋„๋กœ ๋ถ„๋ฆฌ๋˜๋ฉด
์˜คํžˆ๋ ค ํ•œ๋ˆˆ์— ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ณ ,
ํŒŒ์ผ ์Šค์œ„์นญ์ด ๋Š˜์–ด๋‚˜๋ฉด์„œ ์ธ์ง€ ๋ถ€ํ•˜๋„ ์ปค์ง„๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋‹ค์‹œ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ UI ๊ตฌ์กฐ์™€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ 1:1๋กœ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค๋Š” ์ ์ด
๋ผ์ด๋ธŒ ๋ฆฌ๋ทฐ์—์„œ ๋‚˜์™”๋˜ ์ด์•ผ๊ธฐ์˜€๋Š”๋ฐ,
์ด ๋ง์ด ์ •๋ง ๊ฐ•ํ•˜๊ฒŒ ์™€๋‹ฟ์•˜์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก "ํด๋” ๊ตฌ์กฐ"๋ณด๋‹ค ์ค‘์š”ํ•œ ๊ธฐ์ค€

ํด๋”๊ฐ€ ๊น”๋”ํ•œ์ง€๋Š” ์‚ฌ์‹ค ๋ถ€์ฐจ์  ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.
๋ฆฌ๋ทฐ์—์„œ ๋“ฃ๊ฒŒ๋œ ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ๋ถ„๋ฆฌ๊ฐ€ ์ธ์ง€ ๋ถ€ํ•˜๋ฅผ ๋‚ฎ์ถ”๋Š”๊ฐ€?
  • ์ด ๋ถ„๋ฆฌ๊ฐ€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š”๊ฐ€?
  • ์ด ๋ถ„๋ฆฌ์— ๋”ฐ๋ฅธ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋Š” ๋ฌด์—‡์ธ๊ฐ€?

์ด ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ,
๊ณผ๋„ํ•œ ๋ถ„๋ฆฌ๊ฐ€ ์˜คํžˆ๋ ค ๋ณต์žก๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋ทฐ์—์„œ ๋‚˜์˜จ ํ•œ ๋ฌธ์žฅ์ด ์˜ค๋ž˜ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.

โ€œ์ถ”์ถœ์ด ์•„๋‹ˆ๋ผ ์ถ”์ƒํ™”๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.โ€

์ฐธ๊ณ 

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


2. Suspense โ€” โ€œ์„ฑ๊ณต ์ผ€์ด์Šค์— ์ง‘์ค‘ํ•˜๋Š” UI ์ž‘์„ฑโ€

Suspense๋Š” ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋˜ ์ข‹์€ ๊ธฐ๋Šฅ์ด์—ˆ์ง€๋งŒ
์ €๋Š” ๊ทธ๋™์•ˆ ๋ณด์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์™”์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ์ œ๊ฐ€ ์šฐ๋ คํ–ˆ๋˜ ๋ถ€๋ถ„

  1. ๋กœ๋”ฉ ํ๋ฆ„์ด ์•”์‹œ์ ์œผ๋กœ ์ˆจ๊ฒจ์ ธ ์žˆ์–ด ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›€
  2. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ถ€๋ชจ Suspense Boundary์— ์•”๋ฌต์ ์œผ๋กœ ์˜์กด
  3. ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉํ•  ๋•Œ โ€œ์—ฌ๊ธฐ Suspense ์žˆ๋‚˜?โ€๋ฅผ ๋งค๋ฒˆ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๋น„์šฉ

๊ทธ๋ž˜์„œ ์ €๋Š”

if (isLoading) return <Spinner />;

์ฒ˜๋Ÿผ ๋ช…์‹œ์ ์œผ๋กœ ๋กœ๋”ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํ˜ธํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ ๋ฆฌ๋ทฐ์—์„œ ๋“ค์€ ์ƒˆ๋กœ์šด ๊ด€์ 

๋ฆฌ๋ทฐ์—์„œ ๊ฐ€์žฅ ํฌ๊ฒŒ ์™€๋‹ฟ์•˜๋˜ ๋ง์€ ๋‹ค์Œ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ ์˜์ƒ

Suspense๋Š” ๋‹จ์ˆœํžˆ ๋กœ๋”ฉ์„ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
โ€˜์„ฑ๊ณต ์ผ€์ด์Šค์—๋งŒ ์ง‘์ค‘ํ•ด์„œ UI๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ๋‹คโ€™๋ผ๋Š” ์„ ์–ธ์ด๋‹ค.

์ฆ‰,

  • null์ผ ์ˆ˜๋„ ์žˆ์–ด ๊ฐ™์€ ๋ฐฉ์–ด์  ๋กœ์ง ์—†์ด
  • ์„ฑ๊ณตํ•œ ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์œผ๋กœ UI๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ด๋ฉฐ
  • ๋‹จ์ˆœ ๋กœ๋”ฉ ์ฒ˜๋ฆฌ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ
    ์ฝ”๋“œ์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์ฃผ๋Š” ๊ตฌ์กฐ์  ์žฅ์น˜๋ผ๋Š” ์ ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ Boundary ์˜์กด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด

๋ฆฌ๋ทฐ์—์„œ ์†Œ๊ฐœ๋œ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž์‹ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ํ•˜๋‹จ์—์„œ:

Child.loading = () => <LoadingUI />;

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š”:

<Suspense fallback={<Child.loading />} />

์ด ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋ฉด,

  • ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋””์—์„œ๋“  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ 
  • ํ•„์š”ํ•œ ๋กœ๋”ฉ UI๊นŒ์ง€ ์Šค์Šค๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด

Suspense Boundary์— ๋Œ€ํ•œ ์•”๋ฌต์  ์˜์กด์„ฑ ๋ฌธ์ œ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ๋œ๋‹ค๋Š” ์ ์ด ์ธ์ƒ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ ํ•ต์‹ฌ ์š”์•ฝ

๊ตฌ์กฐ๋ณด๋‹ค ๊ทผ๋ณธ์ ์ธ ๊ฒƒ โ€” โ€œ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฝํ˜€์•ผ ํ•œ๋‹คโ€

2์‹œ๊ฐ„ ๋™์•ˆ์˜ ๋ฆฌ๋ทฐ์—์„œ ๊ฐ€์žฅ ๊ฐ•ํ•˜๊ฒŒ ์–ป์€ ๋ฉ”์‹œ์ง€๋Š”
ํด๋” ๊ตฌ์กฐ๋‚˜ ํŠน์ • ํŒจํ„ด๋ณด๋‹ค ์ฝ”๋“œ์˜ ํ๋ฆ„๊ณผ ์ฝํž˜์ด ๋” ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • UI ํ˜•ํƒœ์™€ ์ฝ”๋“œ ๊ตฌ์กฐ๊ฐ€ 1:1๋กœ ๋งคํ•‘๋ ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ์ฑ…์ž„ ๋‹จ์œ„๋กœ ์ถ”์ƒํ™”๋ฅผ ํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋”ฐ๋ผ์˜จ๋‹ค.
  • ์ด (ํ•จ์ˆ˜ / ํŒŒ์ผ / ํด๋”) ๋ถ„๋ฆฌ๊ฐ€ ์ธ์ง€๋ถ€ํ•˜๋ฅผ ๋‚ฎ์ถ”๋‚˜?
  • ์ด (ํ•จ์ˆ˜ / ํŒŒ์ผ / ํด๋”) ๋ถ„๋ฆฌ๊ฐ€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋‚˜?"
  • ์ด (ํ•จ์ˆ˜ / ํŒŒ์ผ / ํด๋”) ๋ถ„๋ฆฌ์˜ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๋Š” ๋ฌด์—‡์ผ๊นŒ?
  • ์ถ”์ถœ๊ณผ ์ถ”์ƒํ™”๋ฅผ ๊ตฌ๋ถ„ํ•˜์ž.

๊ฒฐ๊ตญ, ๋‹จ์ˆœํžˆ ์ž˜๊ฒŒ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋ณด๋‹ค

์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ, ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์ค‘์š”ํ•˜๋‹ค.

๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋А๋ผ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


โœจ ๋งˆ๋ฌด๋ฆฌ

์งง์•˜๋˜ ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์ด์—ˆ์ง€๋งŒ
์ œ๊ฐ€ ๋†“์ณค๋˜ ๋ฌธ์ œ์ ๋“ค๊ณผ
์™œ ๊ตฌ์กฐ ์„ค๊ณ„์—์„œ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์—ˆ๋Š”์ง€
๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์†Œ์ค‘ํ•œ ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์•ž์œผ๋กœ๋Š” ์ด๊ฒƒ๋“ค์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ โ€˜์ •๋ง ์•Œ์•„์•ผ ํ•  ์ •๋ณดโ€™๋งŒ ๊ฐ–๋„๋ก ์„ค๊ณ„ํ•˜์ž.
  • ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฝํ˜€์•ผ ํ•œ๋‹ค.
  • โ€œDDD vs FSD ์ค‘ ๋ฌด์—‡์ด ์ •๋‹ต์ผ๊นŒ?โ€๋ผ๋Š” ๊ณ ๋ฏผ๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ ๊ฒƒ์€,

๋‚ด ์ฝ”๋“œ๊ฐ€ ์ž˜ ์ฝํžˆ๋Š”๊ฐ€?
์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€?
์ธ์ง€ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š”๊ฐ€?

๋‹ค์Œ์— ๊ธฐํšŒ๊ฐ€ ์žˆ๋‹ค๋ฉด
๋‹ค๋ฅธ ๋ถ„๋“ค๋„ ๊ผญ ์ฐธ์—ฌํ•ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ™

profile
๊ธฐ์ˆ ์„ ๋„˜์–ด ์ œํ’ˆ์˜ ๊ฐ€์น˜๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

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

comment-user-thumbnail
2025๋…„ 11์›” 26์ผ

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2025๋…„ 11์›” 27์ผ

Child.loading = () => ;
์€ ์ƒ๊ฐ๋„ ๋ชปํ–ˆ์—ˆ๋Š”๋ฐ ์™€...

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2025๋…„ 12์›” 1์ผ

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2025๋…„ 12์›” 9์ผ

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค E-ZPassVA

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ