--- id: [[P-Reinforce]]-AUTO-EDDCE3 category: "10_Wiki/πŸ’‘ Topics/Design & Experience" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - μž¬μ‘°μ • ([[Reconciliation]])" --- # [[μž¬μ‘°μ • (Reconciliation)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > Reactκ°€ λ Œλ”λ§ μ‹œ μƒˆλ‘œμš΄ 가상 DOM([[Virtual DOM]]) νŠΈλ¦¬μ™€ 이전 트리λ₯Ό λΉ„κ΅ν•˜μ—¬, μ‹€μ œ DOM에 μ μš©ν•΄μ•Ό ν•  μ΅œμ†Œν•œμ˜ λ³€κ²½ μ‚¬ν•­λ§Œμ„ μ°Ύμ•„λ‚΄μ–΄ μ—…λ°μ΄νŠΈν•˜λŠ” $O(n)$ λ³΅μž‘λ„μ˜ 핡심 λ””ν•‘(Diffing) μ•Œκ³ λ¦¬μ¦˜ ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. μž¬μ‘°μ •μ˜ 2단계 ν”„λ‘œμ„ΈμŠ€** ReactλŠ” λ Œλ”λ§ 쀑 μ‹€μ œ DOM을 직접 μ‘°μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹  μž¬μ‘°μ •μ€ 두 κ°€μ§€ λ‹¨κ³„λ‘œ λ‚˜λ‰˜μ–΄ μ‹€ν–‰λ©λ‹ˆλ‹€. - **λ Œλ” 단계 (Render Phase):** μ»΄ν¬λ„ŒνŠΈλ₯Ό ν˜ΈμΆœν•˜μ—¬ UIκ°€ μ–΄λ–»κ²Œ 보여야 ν•˜λŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μƒˆλ‘œμš΄ 가상 트리λ₯Ό κ΅¬μΆ•ν•©λ‹ˆλ‹€. - **컀밋 단계 (Commit Phase):** 이전 νŠΈλ¦¬μ™€μ˜ 비ꡐ(Diffing)λ₯Ό 톡해 κ³„μ‚°λœ λ³€κ²½ μ‚¬ν•­λ§Œμ„ μ‹€μ œ DOM에 μ μš©ν•©λ‹ˆλ‹€. **2. μž¬μ‘°μ •μ˜ 3κ°€μ§€ 핡심 κ·œμΉ™** React의 λ””ν•‘ μ•Œκ³ λ¦¬μ¦˜μ€ 예츑 κ°€λŠ₯ν•œ κ·œμΉ™μ— 따라 μ»΄ν¬λ„ŒνŠΈμ˜ λ¦¬λ Œλ”λ§ μ—¬λΆ€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. - **νƒ€μž…μ΄ λ‹€λ₯Έ μš”μ†Œ:** 같은 μœ„μΉ˜μ— λ‹€λ₯Έ νƒ€μž…μ˜ μš”μ†Œ(`div`μ—μ„œ `span` λ“±)κ°€ λ“€μ–΄μ˜€λ©΄, ReactλŠ” 이전 ν•˜μœ„ 트리λ₯Ό μ™„μ „νžˆ 파괴(μ–Έλ§ˆμš΄νŠΈ)ν•˜κ³  μƒˆλ‘œμš΄ 트리λ₯Ό μ²˜μŒλΆ€ν„° λ‹€μ‹œ κ΅¬μΆ•ν•©λ‹ˆλ‹€. - **Keyλ₯Ό ν†΅ν•œ 식별:** λ°°μ—΄μ΄λ‚˜ 리슀트 λ Œλ”λ§ μ‹œ κ³ μœ ν•œ `key`λ₯Ό λΆ€μ—¬ν•˜λ©΄, μœ„μΉ˜κ°€ λ°”λ€Œλ”λΌλ„ Reactκ°€ `key`λ₯Ό 톡해 κΈ°μ‘΄ ν•­λͺ©μ„ μ‹λ³„ν•˜μ—¬ λΆˆν•„μš”ν•œ μž¬μƒμ„± 없이 효율적으둜 μž¬λ°°μΉ˜ν•©λ‹ˆλ‹€. - **λ™μΌν•œ μ»΄ν¬λ„ŒνŠΈ νƒ€μž…:** 같은 νƒ€μž…μ˜ μ»΄ν¬λ„ŒνŠΈκ°€ λ™μΌν•œ μœ„μΉ˜μ— μœ μ§€λ˜λ©΄, μ»΄ν¬λ„ŒνŠΈ μΈμŠ€ν„΄μŠ€μ™€ λ‚΄λΆ€ μƒνƒœ([[State]])λŠ” κ·ΈλŒ€λ‘œ 보쑴된 채 λ³€κ²½λœ ν”„λ‘­μŠ€(Props)만 μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€. **3. μ„±λŠ₯ μ˜€λ²„ν—€λ“œμ™€ ν•œκ³„** μž¬μ‘°μ •μ€ 일반적인 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” 맀우 νš¨μœ¨μ μ΄μ§€λ§Œ, λŒ€κ·œλͺ¨ DOM μ‘°μž‘μ΄λ‚˜ κ³ λΉˆλ„ μ—…λ°μ΄νŠΈκ°€ λ°œμƒν•˜λŠ” κ²Œμž„ 및 μ• λ‹ˆλ©”μ΄μ…˜ ν™˜κ²½μ—μ„œλŠ” μ‹¬κ°ν•œ 병λͺ© ν˜„μƒμ„ μœ λ°œν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 60FPSλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•œ ν”„λ ˆμž„ μ˜ˆμ‚°μ€ μ•½ 16.67ms인데, μ•½ 3,000개의 λ…Έλ“œλ₯Ό κ°€μ§„ λ³΅μž‘ν•œ λ·°μ—μ„œ μƒνƒœ μ—…λ°μ΄νŠΈκ°€ λ°œμƒν•˜λ©΄ 이 트리 비ꡐ 연산에 CPU μžμ›μ΄ 크게 μ†Œλͺ¨λ˜μ–΄ ν”„λ ˆμž„ λ ˆμ΄νŠΈκ°€ 7 FPS μ΄ν•˜λ‘œ 급락할 수 μžˆμŠ΅λ‹ˆλ‹€. **4. μ΅œμ‹  κ°œμ„  사항 ([[React 19]])** React 19μ—μ„œλŠ” μž¬μ‘°μ •μ˜ νš¨μœ¨μ„±μ„ 높이기 μœ„ν•œ κΈ°λŠ₯듀이 κ°•ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€. `setTimeout`, ν”„λ‘œλ―ΈμŠ€(Promises), λ„€μ΄ν‹°λΈŒ 이벀트 ν•Έλ“€λŸ¬ λ“± λͺ¨λ“  μ»¨ν…μŠ€νŠΈμ—μ„œ **μžλ™ λ°°μΉ­([[Automatic Batching]])**이 μΌκ΄€λ˜κ²Œ μ μš©λ˜μ–΄ μ—¬λŸ¬ μƒνƒœ μ—…λ°μ΄νŠΈλ₯Ό ν•œ 번의 λ¦¬λ Œλ”λ§μœΌλ‘œ λ¬Άμ–΄ μ²˜λ¦¬ν•©λ‹ˆλ‹€. λ˜ν•œ λ™μ‹œμ„± λ Œλ”λ§([[Concurrent Rendering]]) κΈ°λŠ₯이 ν–₯μƒλ˜μ–΄, λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜λŠ” 무거운 λ Œλ”λ§(μ €μš°μ„ μˆœμœ„)을 μž μ‹œ μ€‘λ‹¨ν•˜κ³  μ‚¬μš©μžμ˜ 타이핑과 같은 κΈ΄κΈ‰ν•œ κ³ μš°μ„ μˆœμœ„ μ—…λ°μ΄νŠΈλ₯Ό μ¦‰κ°μ μœΌλ‘œ μ²˜λ¦¬ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Design & Experience λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[가상 DOM (Virtual DOM)]], React λ™μ‹œμ„± κΈ°λŠ₯ (Concurrent Features), [[λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§ λ°©μ§€]], λͺ…λ Ήν˜• μ‘°μž‘ (Imperative Manipulation) - **Projects/Contexts:** κ³ μ„±λŠ₯ μ‹€μ‹œκ°„ μƒν˜Έμž‘μš© μ‹œμŠ€ν…œμ„ μœ„ν•œ React 기반 κ²Œμž„ μ—”μ§„ μ•„ν‚€ν…μ²˜, [[λŒ€κ·œλͺ¨ 데이터 λ Œλ”λ§ 및 가상화 μ΅œμ ν™”]] - **Contradictions/Notes:** μž¬μ‘°μ • μ•Œκ³ λ¦¬μ¦˜μ€ 선언적 UI 관리λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” ν›Œλ₯­ν•œ κΈ°λŠ₯μ΄μ§€λ§Œ 만λŠ₯은 μ•„λ‹™λ‹ˆλ‹€. Three.js(R3F) 기반의 κ²Œμž„μ΄λ‚˜ λŒ€κ·œλͺ¨ μ• λ‹ˆλ©”μ΄μ…˜ ν™˜κ²½μ²˜λŸΌ λ§€ ν”„λ ˆμž„ 수만 개의 μ’Œν‘œλ‚˜ 속성이 λ³€ν•˜λŠ” 경우, React의 μž¬μ‘°μ • 과정을 거치면 μ„±λŠ₯이 λΆ•κ΄΄λ˜λ―€λ‘œ `useFrame` 등을 ν™œμš©ν•΄ μ°Έμ‘°(Ref)의 속성을 직접 μ‘°μž‘(Direct/Imperative Mutation)ν•˜μ—¬ μž¬μ‘°μ •μ„ μš°νšŒν•˜λŠ” 기법이 λ°˜λ“œμ‹œ ν•„μš”ν•©λ‹ˆλ‹€. --- _Last updated: 2026-04-15_ ---