# [[Overrides Pattern]] ## πŸ“Œ Brief Summary Overrides Pattern(μ˜€λ²„λΌμ΄λ“œ νŒ¨ν„΄)은 React μ»΄ν¬λ„ŒνŠΈ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μž¬μ‚¬μš©μ„±κ³Ό μœ μ—°μ„±μ„ 높이기 μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈμ˜ λ‚΄λΆ€ μš”μ†Œλ₯Ό 깊이 있게 μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜λŠ” μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μž…λ‹ˆλ‹€ [1, 2]. μ»΄ν¬λ„ŒνŠΈμ˜ 각 ν•˜μœ„ μš”μ†Œμ— μ‹λ³„μžλ₯Ό λΆ€μ—¬ν•˜κ³  단일 `overrides` 속성(prop)을 λ…ΈμΆœν•˜μ—¬, κ°œλ°œμžκ°€ μŠ€νƒ€μΌμ„ μˆ˜μ •ν•˜κ±°λ‚˜ μΆ”κ°€ 속성을 μ „λ‹¬ν•˜κ³  λ Œλ”λ§λ˜λŠ” μ»΄ν¬λ„ŒνŠΈ 자체λ₯Ό ꡐ체할 수 있게 ν•©λ‹ˆλ‹€ [3-5]. 이λ₯Ό 톡해 λͺ¨λ“  κ°€λŠ₯ν•œ μ‚¬μš© 사둀에 λŒ€ν•΄ μƒˆλ‘œμš΄ 속성을 μΆ”κ°€ν•¨μœΌλ‘œ 인해 λ°œμƒν•˜λŠ” 'prop soup(속성 κ³ΌλΆ€ν•˜)' ν˜„μƒμ„ λ°©μ§€ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•œ UIλ₯Ό ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€ [5]. ## πŸ“– Core Content * **λ“±μž₯ λ°°κ²½ 및 λ„μž… λͺ©μ :** Uber의 Base Web λ””μžμΈ μ‹œμŠ€ν…œ 개발 κ³Όμ •μ—μ„œ μ—”μ§€λ‹ˆμ–΄λ“€μ΄ μ»΄ν¬λ„ŒνŠΈλ₯Ό μž¬μ‚¬μš©ν•  λ•Œ κ°€μž₯ ν•„μš”λ‘œ ν•˜λŠ” 것은 "μ»΄ν¬λ„ŒνŠΈμ— λŒ€ν•œ 더 λ§Žμ€ μ œμ–΄κΆŒ"μ΄μ—ˆμŠ΅λ‹ˆλ‹€ [1]. κ΅¬μ²΄μ μœΌλ‘œλŠ” μŠ€νƒ€μΌ μ»€μŠ€ν„°λ§ˆμ΄μ§•, 볡합 μ»΄ν¬λ„ŒνŠΈ λ‚΄μ˜ νŠΉμ • ν•˜μœ„ μš”μ†Œμ— μ‚¬μš©μž μ •μ˜ 속성 전달, 그리고 μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§ 자체λ₯Ό μˆ˜μ •ν•  수 μžˆλŠ” κΈ°λŠ₯이 μš”κ΅¬λ˜μ—ˆκ³ , 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν†΅ν•©λœ Overrides APIκ°€ λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [1]. * **μž‘λ™ 방식 및 κ΅¬ν˜„ (객체 기반 μ»΄ν¬λ„ŒνŠΈ μ£Όμž…):** * **μš”μ†Œ μ‹λ³„μž λΆ€μ—¬:** μ»΄ν¬λ„ŒνŠΈ 내뢀에 λ Œλ”λ§λ˜λŠ” λͺ¨λ“  ν•˜μœ„ μš”μ†Œ(underlying element)에 μ‹λ³„μž(identifier, 예: `Root`, `Option` λ“±)λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [3]. * **속성 및 μŠ€νƒ€μΌ 병합:** μ‹λ³„μžλ₯Ό 톡해 λŒ€μƒ μš”μ†Œμ— 좔가적인 속성을 μ „λ‹¬ν•˜κ±°λ‚˜, κΈ°λ³Έ μŠ€νƒ€μΌκ³Ό 깊게 병합(deep-merged)λ˜λŠ” μŠ€νƒ€μΌ μ˜€λ²„λΌμ΄λ“œ(객체 λ˜λŠ” ν•¨μˆ˜ ν˜•νƒœ)λ₯Ό μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4]. * **μ»΄ν¬λ„ŒνŠΈ ꡐ체:** λŒ€μƒ μ‹λ³„μžμ— λŒ€ν•œ λŒ€μ²΄ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°’μœΌλ‘œ μ „λ‹¬ν•˜μ—¬, ν•˜μœ„ μš”μ†Œλ₯Ό μ™„μ „νžˆ ꡐ체(Component replacement)ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 νŠΉμ • ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈμ˜ κΈ°λŠ₯μ΄λ‚˜ ν˜•νƒœλ₯Ό 자유둭게 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3, 4]. * **μ£Όμš” 이점:** * **μ΅œμƒμœ„ 속성 μ˜€λ²„λ‘œλ“œ λ°©μ§€:** 라이브러리 μž‘μ„±μžκ°€ μ—£μ§€ μΌ€μ΄μŠ€λ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄ μˆ˜λ§Žμ€ μƒˆλ‘œμš΄ prop을 일일이 λ…ΈμΆœν•  ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ, μ΅œμƒμœ„ μˆ˜μ€€μ˜ 속성 APIκ°€ λΉ„λŒ€ν•΄μ§€λŠ” ν˜„μƒ(Prop soup)을 λ°©μ§€ν•©λ‹ˆλ‹€ [3, 5]. * **μΌκ΄€λœ 속성 전달:** 볡합 μ»΄ν¬λ„ŒνŠΈ μ „μ²΄μ—μ„œ 일관성 없이 μΆ”κ°€ 속성이 ν”„λ‘μ‹œ(proxy)λ˜λŠ” 문제λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€ [3]. * **κΉŠμ€ μ»€μŠ€ν„°λ§ˆμ΄μ§•(Deep Customization) 지원:** ν”„λ¦¬μ  ν…Œμ΄μ…”λ„ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‰½κ²Œ ꡐ체할 수 μžˆλ„λ‘ ν•˜μ—¬, 라이브러리λ₯Ό 무겁게 λ§Œλ“€μ§€ μ•ŠμœΌλ©΄μ„œλ„ λ‹€μ–‘ν•œ μš”κ΅¬ 사항을 κ°€μ§„ 수백 개의 λ‚΄λΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 맞게 ν™•μž₯(scale)ν•  수 있게 ν•΄μ€λ‹ˆλ‹€ [2, 3, 5]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Compound Components]], [[Headless Components]], [[Design Systems]] - **Projects/Contexts:** Base Web, Uber - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄, React μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄ 쀑 Compound Componentsκ°€ μƒνƒœ(Context) 곡유λ₯Ό ν†΅ν•œ λ ˆμ΄μ•„μ›ƒμ˜ μœ μ—°μ„±μ„ μ œκ³΅ν•˜κ³  Headless Componentsκ°€ 둜직의 μž¬μ‚¬μš©μ„±μ— μ§‘μ€‘ν•œλ‹€λ©΄, Overrides Pattern은 객체 기반 μ»΄ν¬λ„ŒνŠΈ μ£Όμž…μ„ ν†΅ν•œ 'κΉŠμ€ μ»€μŠ€ν„°λ§ˆμ΄μ§•(Deep customization)'에 νŠΉν™”λœ νŒ¨ν„΄μœΌλ‘œ λΆ„λ₯˜ 및 λΉ„κ΅λ©λ‹ˆλ‹€ [2]. --- *Last updated: 2026-04-26*