Skip to content

Latest commit

Β 

History

History
93 lines (60 loc) Β· 5.4 KB

File metadata and controls

93 lines (60 loc) Β· 5.4 KB
title 디버깅 및 문제 ν•΄κ²°
이 κ°€μ΄λ“œμ—μ„œλŠ” React 컴파일러 μ‚¬μš© μ‹œ λ°œμƒν•˜λŠ” 문제λ₯Ό μ‹λ³„ν•˜κ³  ν•΄κ²°ν•˜λŠ” 방법을 μ•Œμ•„λ΄…λ‹ˆλ‹€. 컴파일 문제λ₯Ό λ””λ²„κΉ…ν•˜κ³  일반적인 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법을 λ°°μ›λ‹ˆλ‹€.
  • 컴파일러 였λ₯˜μ™€ λŸ°νƒ€μž„ 문제의 차이
  • μ»΄νŒŒμΌμ„ λ°©ν•΄ν•˜λŠ” 일반적인 νŒ¨ν„΄
  • 단계별 디버깅 μ›Œν¬ν”Œλ‘œμš°

컴파일러 λ™μž‘ μ΄ν•΄ν•˜κΈ° {/understanding-compiler-behavior/}

React μ»΄νŒŒμΌλŸ¬λŠ” React의 κ·œμΉ™μ„ λ”°λ₯΄λŠ” μ½”λ“œλ₯Ό μ²˜λ¦¬ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ κ·œμΉ™μ„ μœ„λ°˜ν•  수 μžˆλŠ” μ½”λ“œλ₯Ό λ§Œλ‚˜λ©΄ μ•±μ˜ λ™μž‘μ„ λ³€κ²½ν•˜λŠ” μœ„ν—˜μ„ κ°μˆ˜ν•˜κΈ°λ³΄λ‹€ μ•ˆμ „ν•˜κ²Œ μ΅œμ ν™”λ₯Ό κ±΄λ„ˆλœλ‹ˆλ‹€.

컴파일러 였λ₯˜ vs λŸ°νƒ€μž„ 문제 {/compiler-errors-vs-runtime-issues/}

컴파일러 였λ₯˜λŠ” λΉŒλ“œ μ‹œμ μ— λ°œμƒν•˜λ©° μ½”λ“œκ°€ μ»΄νŒŒμΌλ˜μ§€ μ•Šκ²Œ ν•©λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” λ¬Έμ œκ°€ μžˆλŠ” μ½”λ“œλ₯Ό μ‹€νŒ¨μ‹œν‚€κΈ°λ³΄λ‹€ κ±΄λ„ˆλ›°λ„λ‘ μ„€κ³„λ˜μ–΄ 있기 λ•Œλ¬Έμ— μ΄λŸ¬ν•œ 였λ₯˜λŠ” 자주 λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λŸ°νƒ€μž„ λ¬Έμ œλŠ” 컴파일된 μ½”λ“œκ°€ μ˜ˆμƒκ³Ό λ‹€λ₯΄κ²Œ λ™μž‘ν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€. React 컴파일러 κ΄€λ ¨ λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ λŒ€λΆ€λΆ„ λŸ°νƒ€μž„ λ¬Έμ œμž…λ‹ˆλ‹€. μ΄λŠ” 일반적으둜 μ»΄νŒŒμΌλŸ¬κ°€ 감지할 수 μ—†λŠ” λ―Έλ¬˜ν•œ λ°©μ‹μœΌλ‘œ μ½”λ“œκ°€ React의 κ·œμΉ™μ„ μœ„λ°˜ν•˜κ³ , μ»΄νŒŒμΌλŸ¬κ°€ κ±΄λ„ˆλ›°μ–΄μ•Ό ν–ˆλ˜ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‹€μˆ˜λ‘œ μ»΄νŒŒμΌν–ˆμ„ λ•Œ λ°œμƒν•©λ‹ˆλ‹€.

λŸ°νƒ€μž„ 문제λ₯Ό 디버깅할 λ•ŒλŠ” ESLint κ·œμΉ™μ΄ κ°μ§€ν•˜μ§€ λͺ»ν•œ 영ν–₯λ°›λŠ” μ»΄ν¬λ„ŒνŠΈμ˜ React κ·œμΉ™ μœ„λ°˜μ„ μ°ΎλŠ” 데 μ§‘μ€‘ν•˜μ„Έμš”. μ»΄νŒŒμΌλŸ¬λŠ” μ½”λ“œκ°€ μ΄λŸ¬ν•œ κ·œμΉ™μ„ λ”°λ₯Έλ‹€κ³  κ°€μ •ν•˜λ©°, 감지할 수 μ—†λŠ” λ°©μ‹μœΌλ‘œ κ·œμΉ™μ΄ μœ„λ°˜λ˜λ©΄ λŸ°νƒ€μž„ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

μ»΄νŒŒμΌμ„ λ°©ν•΄ν•˜λŠ” 일반적인 νŒ¨ν„΄ {/common-breaking-patterns/}

React μ»΄νŒŒμΌλŸ¬κ°€ 앱을 λ§κ°€λœ¨λ¦΄ 수 μžˆλŠ” μ£Όμš” 원인 쀑 ν•˜λ‚˜λŠ” μ½”λ“œκ°€ 정확성을 μœ„ν•΄ λ©”λͺ¨μ΄μ œμ΄μ…˜μ— μ˜μ‘΄ν•˜λ„λ‘ μž‘μ„±λœ κ²½μš°μž…λ‹ˆλ‹€. μ΄λŠ” 앱이 μ œλŒ€λ‘œ μž‘λ™ν•˜κΈ° μœ„ν•΄ νŠΉμ • 값이 λ©”λͺ¨μ΄μ œμ΄μ…˜λ˜λŠ” 것에 μ˜μ‘΄ν•œλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬κ°€ μˆ˜λ™ 방식과 λ‹€λ₯΄κ²Œ λ©”λͺ¨μ΄μ œμ΄μ…˜ν•  수 μžˆμœΌλ―€λ‘œ, Effectκ°€ κ³Όλ„ν•˜κ²Œ μ‹€ν–‰λ˜κ±°λ‚˜ λ¬΄ν•œ 루프가 λ°œμƒν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈκ°€ λˆ„λ½λ˜λŠ” λ“±μ˜ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ™μž‘μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이런 상황이 λ°œμƒν•˜λŠ” 일반적인 μ‹œλ‚˜λ¦¬μ˜€λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • μ°Έμ‘° 동등성에 μ˜μ‘΄ν•˜λŠ” Effect - Effectκ°€ λ Œλ”λ§ 간에 λ™μΌν•œ μ°Έμ‘°λ₯Ό μœ μ§€ν•˜λŠ” κ°μ²΄λ‚˜ 배열에 μ˜μ‘΄ν•˜λŠ” 경우
  • μ•ˆμ •μ μΈ μ°Έμ‘°κ°€ ν•„μš”ν•œ μ˜μ‘΄μ„± λ°°μ—΄ - λΆˆμ•ˆμ •ν•œ μ˜μ‘΄μ„±μ΄ Effectλ₯Ό λ„ˆλ¬΄ 자주 μ‹€ν–‰ν•˜κ±°λ‚˜ λ¬΄ν•œ 루프λ₯Ό μƒμ„±ν•˜λŠ” 경우
  • μ°Έμ‘° 검사 기반 쑰건뢀 둜직 - μ½”λ“œκ°€ μΊμ‹±μ΄λ‚˜ μ΅œμ ν™”λ₯Ό μœ„ν•΄ μ°Έμ‘° 동등성 검사λ₯Ό μ‚¬μš©ν•˜λŠ” 경우

디버깅 μ›Œν¬ν”Œλ‘œμš° {/debugging-workflow/}

λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ λ‹€μŒ 단계λ₯Ό λ”°λ₯΄μ„Έμš”.

컴파일러 λΉŒλ“œ 였λ₯˜ {/compiler-build-errors/}

λΉŒλ“œλ₯Ό μ˜ˆμƒμΉ˜ μ•Šκ²Œ μ€‘λ‹¨μ‹œν‚€λŠ” 컴파일러 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ 컴파일러의 버그일 κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€. λ‹€μŒ 정보와 ν•¨κ»˜ facebook/react μ €μž₯μ†Œμ— 보고해 μ£Όμ„Έμš”.

  • 였λ₯˜ λ©”μ‹œμ§€
  • 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¨ μ½”λ“œ
  • React 및 컴파일러 버전

λŸ°νƒ€μž„ 문제 {/runtime-issues/}

λŸ°νƒ€μž„ λ™μž‘ 문제의 경우 λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”.

1. μΌμ‹œμ μœΌλ‘œ 컴파일 λΉ„ν™œμ„±ν™” {/temporarily-disable-compilation/}

"use no memo"λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμ œκ°€ μ»΄νŒŒμΌλŸ¬μ™€ 관련이 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

function ProblematicComponent() {
  "use no memo"; // 이 μ»΄ν¬λ„ŒνŠΈμ˜ 컴파일 κ±΄λ„ˆλ›°κΈ°
  // ... λ‚˜λ¨Έμ§€ μ»΄ν¬λ„ŒνŠΈ
}

λ¬Έμ œκ°€ 사라지면 React κ·œμΉ™ μœ„λ°˜κ³Ό 관련이 μžˆμ„ κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€.

λ¬Έμ œκ°€ μžˆλŠ” μ»΄ν¬λ„ŒνŠΈμ—μ„œ μˆ˜λ™ λ©”λͺ¨μ΄μ œμ΄μ…˜(useMemo, useCallback, memo)을 μ œκ±°ν•˜μ—¬ λ©”λͺ¨μ΄μ œμ΄μ…˜ 없이도 앱이 μ˜¬λ°”λ₯΄κ²Œ μž‘λ™ν•˜λŠ”μ§€ 확인해 λ³Ό μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μ œκ±°ν•΄λ„ 버그가 계속 λ°œμƒν•˜λ©΄ μˆ˜μ •ν•΄μ•Ό ν•  React κ·œμΉ™ μœ„λ°˜μ΄ μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€.

2. λ‹¨κ³„λ³„λ‘œ 문제 ν•΄κ²° {/fix-issues-step-by-step/}

  1. κ·Όλ³Έ 원인 식별 (주둜 정확성을 μœ„ν•œ λ©”λͺ¨μ΄μ œμ΄μ…˜)
  2. 각 μˆ˜μ • ν›„ ν…ŒμŠ€νŠΈ
  3. μˆ˜μ • μ™„λ£Œ ν›„ "use no memo" 제거
  4. React DevToolsμ—μ„œ μ»΄ν¬λ„ŒνŠΈμ— ✨ λ°°μ§€κ°€ ν‘œμ‹œλ˜λŠ”μ§€ 확인

컴파일러 버그 보고 {/reporting-compiler-bugs/}

컴파일러 버그λ₯Ό λ°œκ²¬ν–ˆλ‹€κ³  μƒκ°λ˜λ©΄ λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”.

  1. React κ·œμΉ™ μœ„λ°˜μ΄ μ•„λ‹Œμ§€ 확인 - ESLint둜 검사
  2. μ΅œμ†Œ μž¬ν˜„ 사둀 생성 - μž‘μ€ μ˜ˆμ‹œλ‘œ 문제 격리
  3. 컴파일러 없이 ν…ŒμŠ€νŠΈ - 컴파일 μ‹œμ—λ§Œ λ¬Έμ œκ°€ λ°œμƒν•˜λŠ”μ§€ 확인
  4. 이슈 등둝:
    • React 및 컴파일러 버전
    • μ΅œμ†Œ μž¬ν˜„ μ½”λ“œ
    • μ˜ˆμƒ λ™μž‘ vs μ‹€μ œ λ™μž‘
    • 였λ₯˜ λ©”μ‹œμ§€

λ‹€μŒ 단계 {/next-steps/}