# [[React Router]] ## ๐Ÿ“Œ Brief Summary React Router๋Š” React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณต์žกํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋ ˆ์ด์•„์›ƒ๊ณผ ๊ณ„์ธต์  ๋„ค๋น„๊ฒŒ์ด์…˜ ํŒจํ„ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ผ์šฐํŒ… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค [1, 2]. ๋ฒ„์ „ 6.4 ์ด์ƒ๋ถ€ํ„ฐ๋Š” ๋‹จ์ˆœํ•œ ์ปดํฌ๋„ŒํŠธ ์ „ํ™˜์„ ๋„˜์–ด ๋ฐ์ดํ„ฐ ํŽ˜์นญ(fetching), ์ƒํƒœ ๊ด€๋ฆฌ, ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์„ ์ค‘์•™์—์„œ ์กฐ์ •ํ•˜๋Š” ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ๋กœ ์ง„ํ™”ํ–ˆ๋‹ค [3]. Loaders์™€ Actions๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ๊ณผ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ ์ €ํ•˜(์›Œํ„ฐํด ํ˜„์ƒ)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ตœ์‹  ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ๊ธฐ์—ฌํ•œ๋‹ค [4, 5]. ## ๐Ÿ“– Core Content * **์ค‘์ฒฉ ๋ผ์šฐํŒ… ๋ฐ ๋ ˆ์ด์•„์›ƒ ์•„ํ‚คํ…์ฒ˜ (Nested Routing & Layouts):** React Router๋Š” ๋ถ€๋ชจ ๋ผ์šฐํŠธ ๋‚ด์— ์ž์‹ ๋ผ์šฐํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ์ค‘์ฒฉ ๋ผ์šฐํŒ…์„ ์ง€์›ํ•œ๋‹ค [1, 6]. `` ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ ๋ผ์šฐํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์—ญํ• ์„ ํ•˜๋ฉฐ, ์‚ฌ์ด๋“œ๋ฐ”๋‚˜ ํ—ค๋”์™€ ๊ฐ™์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” UI๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ํŠน์ • ๋ถ€๋ถ„๋งŒ URL์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ณต์žกํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค [1, 2, 7]. `index` ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋ชจ ๋ผ์šฐํŠธ์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•  ๋•Œ ํ‘œ์‹œ๋  ๊ธฐ๋ณธ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค [1, 2, 8]. * **Loaders์™€ Actions๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ:** ๊ณผ๊ฑฐ React ์•ฑ์˜ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์นญํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ์›Œํ„ฐํด(waterfall) ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๊ธฐ๋Šฅ์ด๋‹ค [4, 5]. Loaders๋Š” ๋ผ์šฐํŠธ๊ฐ€ ์ผ์น˜ํ•  ๋•Œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ํŽ˜์นญํ•˜๋ฉฐ, `useLoaderData()` ํ›…์„ ํ†ตํ•ด ๋ Œ๋”๋ง ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค [5, 9]. Actions๋Š” ํผ ์ œ์ถœ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์˜ ๋ณ€์ด(mutation)๋ฅผ ๋ผ์šฐํŠธ ๋ ˆ๋ฒจ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์žฌ๊ฒ€์ฆํ•œ๋‹ค [5, 10]. * **์ƒํƒœ ๊ด€๋ฆฌ์˜ ๋‹จ์ˆœํ™” (State Management):** React Router๋Š” Redux๋‚˜ TanStack Query ๊ฐ™์€ ๊ธฐ์กด์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์˜์กด๋„๋ฅผ ์ค„์—ฌ์ค€๋‹ค [11, 12]. ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์ƒํƒœ๋Š” `useNavigation`, `useFetcher`, `loaderData`, `actionData` ๋“ฑ์„ ํ†ตํ•ด ๋ผ์šฐํ„ฐ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ง์ ‘ ๊ด€๋ฆฌํ•œ๋‹ค [13]. ๋˜ํ•œ, UI ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ React state๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  URL์˜ ๊ฒ€์ƒ‰ ๋งค๊ฐœ๋ณ€์ˆ˜(Search Params)๋‚˜ ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒํƒœ ๋™๊ธฐํ™” ๋ฒ„๊ทธ๋ฅผ ์ค„์ด๊ณ  ๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›(Single Source of Truth)์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค [13-15]. * **์ฝ”๋“œ ๋ถ„ํ•  ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™” (Code Splitting):** ์ดˆ๊ธฐ ๋กœ๋“œ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ž๋™ ๋ฐ ์ˆ˜๋™ ์ฝ”๋“œ ๋ถ„ํ• ์„ ์ œ๊ณตํ•œ๋‹ค [16]. ํ”„๋ ˆ์ž„์›Œํฌ ๋ชจ๋“œ์—์„œ๋Š” ๊ฐ ๋ผ์šฐํŠธ ํŒŒ์ผ์ด ์ž์ฒด ์ฒญํฌ๋กœ ๊ธฐ๋ณธ ์ž๋™ ๋ถ„ํ• ๋œ๋‹ค [16]. ์ˆ˜๋™์œผ๋กœ๋Š” `React.lazy()`์™€ `Suspense`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด๊ฑฐ์šด UI ์ปดํฌ๋„ŒํŠธ๋‚˜ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•„์š”ํ•  ๋•Œ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)ํ•  ์ˆ˜ ์žˆ๋‹ค [17, 18]. * **๊ณ ๊ธ‰ ๋ผ์šฐํŒ… ๋ฐ ์ œ์–ด ์ „๋žต:** ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์ ์šฉํ•˜๋Š” '๋ณดํ˜ธ๋œ ๋ผ์šฐํŠธ(Protected Routes)', ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ 404 ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” 'ํฌ๊ด„(Catch-all) ๋ผ์šฐํŠธ(`*`)'๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค [19-21]. ์•„์šธ๋Ÿฌ ์ €์ˆ˜์ค€ API์ธ `dataStrategy`๋ฅผ ํ†ตํ•ด ๋ฏธ๋“ค์›จ์–ด๋‚˜ ์ปค์Šคํ…€ ์žฌ๊ฒ€์ฆ ๋กœ์ง ๋“ฑ ์•ก์…˜๊ณผ ๋กœ๋”์˜ ์‹คํ–‰ ๋ฐฉ์‹์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ์— ๋งž๊ฒŒ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค [22, 23]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Code Splitting]], [[Client-Side Rendering (CSR)]], [[Core Web Vitals]], [[User Experience (UX)]] - **Projects/Contexts:** [[Modern Website Architecture]], [[Frontend Performance Optimization]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด, ์ „ํ†ต์ ์ธ React ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด์ด๋‚˜ ์บ์‹ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Redux, Apollo ๋“ฑ)๋ฅผ React Router ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜คํžˆ๋ ค React Router์˜ ๋‚ด์žฅ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ํšจ์œจ์„ฑ์„ ๋ฌด์‹œํ•˜๋Š” ์•ˆํ‹ฐํŒจํ„ด(anti-pattern)์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ง€์ ํ•œ๋‹ค [12, 13]. --- *Last updated: 2026-04-26*