## πŸ“Œ Brief Summary React Component Design은 μΈν„°νŽ˜μ΄μŠ€ μš”μ†Œλ₯Ό κ΅¬μ‘°ν™”ν•˜μ—¬ ν™•μž₯μ„±, μœ μ§€λ³΄μˆ˜μ„±, μ„±λŠ₯을 ν™•λ³΄ν•˜λŠ” μ•„ν‚€ν…μ²˜ μ‹€μ²œλ²•μ΄λ‹€. μ»΄ν¬λ„ŒνŠΈμ— SOLID, DRY, KISS와 같은 μ†Œν”„νŠΈμ›¨μ–΄ 곡학 원칙을 μ μš©ν•˜μ—¬ 각 μ»΄ν¬λ„ŒνŠΈκ°€ λͺ…ν™•ν•œ μ±…μž„μ„ κ°–κ³ , λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 UIκ°€ λΆ„λ¦¬λ˜λ©°, μƒν˜Έ λ…λ¦½μ μœΌλ‘œ 합성될 수 μžˆλŠ” ꡬ쑰λ₯Ό λ§Œλ“œλŠ” 것을 λͺ©ν‘œλ‘œ ν•œλ‹€. ## πŸ“– Core Content 1. **SOLID μ›μΉ™μ˜ μ»΄ν¬λ„ŒνŠΈμ  해석** - **SRP (단일 μ±…μž„)**: μ»΄ν¬λ„ŒνŠΈλŠ” ν•˜λ‚˜μ˜ ꡬ체적 μ—­ν• λ§Œ μˆ˜ν–‰ν•΄μ•Ό ν•˜λ©°, λΉ„λŒ€ν•΄μ§„ λ‘œμ§μ€ μ»€μŠ€ν…€ ν›…μœΌλ‘œ λΆ„λ¦¬ν•œλ‹€. - **OCP (개방-폐쇄)**: λ‚΄λΆ€ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λŠ” λŒ€μ‹  μ»΄ν¬λ„ŒνŠΈ ν•©μ„±(Composition)μ΄λ‚˜ `children`을 톡해 κΈ°λŠ₯을 ν™•μž₯ν•œλ‹€. - **ISP (μΈν„°νŽ˜μ΄μŠ€ 뢄리)**: μ»΄ν¬λ„ŒνŠΈλŠ” μžμ‹ μ΄ μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” μ΅œμ†Œν•œμ˜ propμ—λ§Œ μ˜μ‘΄ν•΄μ•Ό ν•œλ‹€. 2. **κ΄€μ‹¬μ‚¬μ˜ 뢄리 (Separation of Concerns)** - UI μ»΄ν¬λ„ŒνŠΈμ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, 데이터 패칭, λΆ€μˆ˜ 효과λ₯Ό μΆ”μΆœν•˜μ—¬ μ»€μŠ€ν…€ ν›…μœΌλ‘œ μΊ‘μŠν™”ν•œλ‹€. - 이λ₯Ό 톡해 UIλŠ” ν”„λ Œμ  ν…Œμ΄μ…˜ μ—­ν• μ—λ§Œ μ§‘μ€‘ν•˜κ³  λ‘œμ§μ€ λ…λ¦½μ μœΌλ‘œ ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•œ ꡬ쑰λ₯Ό ν™•λ³΄ν•œλ‹€. 3. **계측적 μ•„ν‚€ν…μ²˜ (FSD)** - λ²”μš© UI(Shared), λΉ„μ¦ˆλ‹ˆμŠ€ μ—”ν‹°ν‹°(Entities), μ‚¬μš©μž μ‹œλ‚˜λ¦¬μ˜€(Features) λ“±μœΌλ‘œ μ»΄ν¬λ„ŒνŠΈμ˜ λ²”μœ„λ₯Ό κ³„μΈ΅ν™”ν•˜μ—¬ κ΄€λ¦¬ν•œλ‹€. 4. **μ•ˆμ •μ„± 및 μ„±λŠ₯ 섀계** - **Error Boundaries**: νŠΉμ • μ»΄ν¬λ„ŒνŠΈμ˜ λŸ°νƒ€μž„ 였λ₯˜κ°€ μ•± 전체λ₯Ό λ©ˆμΆ”μ§€ μ•Šλ„λ‘ μ„ μ–Έμ μœΌλ‘œ μž₯μ• λ₯Ό κ²©λ¦¬ν•œλ‹€. - **λ©”λͺ¨μ΄μ œμ΄μ…˜**: λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§ λ°©μ§€λ₯Ό μœ„ν•΄ `React.memo`와 μ•ˆμ •μ μΈ `key` μ „λž΅μ„ μ‚¬μš©ν•œλ‹€. 5. **λͺ…λͺ… μ»¨λ²€μ…˜** - 파일λͺ…은 `kebab-case`, μ»΄ν¬λ„ŒνŠΈ 및 νƒ€μž…μ€ `PascalCase`, λ³€μˆ˜ 및 훅은 `camelCase`λ₯Ό μ€€μˆ˜ν•˜μ—¬ 일관성을 μœ μ§€ν•œλ‹€. ## βš–οΈ Trade-offs & Caveats - **좔상화 vs λ‹¨μˆœν•¨**: 둜직 뢄리와 μΆ”μƒν™”λŠ” μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ΄μ§€λ§Œ, λ„ˆλ¬΄ λ§Žμ€ μ»€μŠ€ν…€ ν›…κ³Ό μ»΄ν¬λ„ŒνŠΈ λΆ„λ¦¬λŠ” μ½”λ“œλ₯Ό ν•œλˆˆμ— νŒŒμ•…ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“œλŠ” '인지적 νŒŒνŽΈν™”'λ₯Ό μ΄ˆλž˜ν•  수 μžˆλ‹€(KISS μ›μΉ™κ³Όμ˜ 좩돌). - **μ„±λŠ₯ μ˜€λ²„ν—€λ“œ**: `React.memo` λ“±μ˜ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ λ‚¨λ°œν•  경우, 비ꡐ μ—°μ‚° 자체의 λΉ„μš©μ΄ λ Œλ”λ§ λΉ„μš©λ³΄λ‹€ μ»€μ§€λŠ” μ—­νš¨κ³Όκ°€ λ°œμƒν•  수 μžˆλ‹€. - **섀계 μ‹œκ°„ λΉ„μš©**: ν™•μž₯을 κ³ λ €ν•œ OCP μ„€κ³„λŠ” 초기 개발 μ‹œκ°„μ„ μ¦κ°€μ‹œν‚€λ©°, μ‹€μ œλ‘œ λ°œμƒν•˜μ§€ μ•Šμ„ ν™•μž₯을 λŒ€λΉ„ν•˜λŠ” κ³Όμž‰ μ—”μ§€λ‹ˆμ–΄λ§(YAGNI μœ„λ°˜)이 될 μœ„ν—˜μ΄ μžˆλ‹€. ## πŸ”— Knowledge Connections ### Related Concepts - **SOLID Principles**: κ³ ν’ˆμ§ˆ μ»΄ν¬λ„ŒνŠΈ μ„€κ³„μ˜ κΈ°μ€€ (관계: 섀계 원칙) - **Custom Hooks**: 둜직 뢄리와 μž¬μ‚¬μš©μ˜ 핡심 도ꡬ (관계: μ‹€μ²œ μˆ˜λ‹¨) - **Error Boundaries**: μ‹œμŠ€ν…œ 볡원λ ₯ 확보 (관계: 방어적 섀계) ### Deeper Research Questions 1. μ»΄ν¬λ„ŒνŠΈ ν•©μ„±(Composition)을 톡해 OCPλ₯Ό 지킬 λ•Œ λ°œμƒν•˜λŠ” 'Prop Drilling' 문제λ₯Ό μ•„ν‚€ν…μ²˜μ μœΌλ‘œ μš°μ•„ν•˜κ²Œ ν•΄κ²°ν•˜λŠ” 방법은? 2. React Server Components ν™˜κ²½μ—μ„œ 'ν”„λ ˆμ  ν…Œμ΄μ…˜κ³Ό 둜직의 뢄리' νŒ¨ν„΄μ€ μ–΄λ–»κ²Œ λ³€ν™”ν•΄μ•Ό ν•˜λŠ”κ°€? 3. `React.memo`λ₯Ό ν†΅ν•œ μ΅œμ ν™”κ°€ μ‹€μ§ˆμ μΈ μ„±λŠ₯ 이득을 μ£ΌλŠ”μ§€ νŒλ‹¨ν•˜κΈ° μœ„ν•œ μ •λŸ‰μ  ν”„λ‘œνŒŒμΌλ§ 기쀀은? 4. λŒ€κ·œλͺ¨ 폼(Form) 섀계 μ‹œ, ISPλ₯Ό μ€€μˆ˜ν•˜λ©΄μ„œλ„ μœ νš¨μ„± 검사 둜직의 응집도λ₯Ό μœ μ§€ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈ μΈν„°νŽ˜μ΄μŠ€ 섀계법은? 5. Error Boundaryκ°€ ν¬μ°©ν•˜μ§€ λͺ»ν•˜λŠ” 비동기 μ—λŸ¬λ₯Ό μ»΄ν¬λ„ŒνŠΈ 생λͺ…μ£ΌκΈ° λ‚΄λΆ€λ‘œ λŒμ–΄λ“€μ—¬ 톡합 μ²˜λ¦¬ν•˜λŠ” νŒ¨ν„΄μ€? ### Practical Application Contexts - **UI μ»΄ν¬λ„ŒνŠΈ 라이브러리 ꡬ좕**: λ‹€μ–‘ν•œ ν”„λ‘œμ νŠΈμ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ κ³ λ„λ‘œ μœ μ—°ν•œ 베이슀 μ»΄ν¬λ„ŒνŠΈ 섀계. - **λ ˆκ±°μ‹œ μ»΄ν¬λ„ŒνŠΈ λ¦¬νŒ©ν† λ§**: 1000쀄 μ΄μƒμ˜ κ±°λŒ€ν•œ μ»΄ν¬λ„ŒνŠΈλ₯Ό κΈ°λŠ₯λ³„λ‘œ μͺΌκ°œκ³  λ‘œμ§μ„ ν›…μœΌλ‘œ μΆ”μΆœν•˜μ—¬ μœ μ§€λ³΄μˆ˜μ„± 확보. ### Adjacent Topics - **React Hooks & Lifecycle** - **Feature-Sliced Design (FSD)** - **Design Systems & Atomic Design**