← λͺ©λ‘μœΌλ‘œ
Why React Created Functional Components

μ»΄ν¬λ„ŒνŠΈ μž‘μ„± λ°©μ‹μ˜ 두 κ°€μ§€ 접근법

ν”„λ‘ νŠΈμ—”λ“œ ν”„λ ˆμž„μ›Œν¬λ‚˜ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œλŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μž‘μ„± ν•  λ•Œ, 보톡 두가지 λ°©λ²•μœΌλ‘œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
클래슀 λ˜λŠ” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ μž…λ‹ˆλ‹€.

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€ν‘œμ μΈ ν”„λ ˆμž„μ›Œν¬λ‘œλŠ” Angularκ°€ μžˆμŠ΅λ‹ˆλ‹€.
AngularλŠ” Angular.js 이후 νƒ€μž…μŠ€ν¬λ¦½νŠΈμ™€ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€.

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ 단점

μ €λŠ” λ‹€λ…„κ°„ Angularλ₯Ό μ‚¬μš©ν•΄λ³Έ κ²½ν—˜μœΌλ‘œ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ μž₯단점을 잘 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.
κ°œμΈμ μœΌλ‘œλŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ μž₯μ λ³΄λ‹€λŠ” 단점이 λ§Žλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

κ·Έ 이유λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ μ–‘λ‚ μ˜ 검은 this μž…λ‹ˆλ‹€.
thisλ₯Ό μ΄μš©ν•΄ 클래슀 멀버 λ³€μˆ˜λ‚˜ λ©”μ„œλ“œμ— λΉ λ₯΄κ²Œ μ ‘κ·Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ°˜λŒ€λ‘œ 큰 λ‹¨μ μœΌλ₯΄ μ§€λ‹ˆκ³  μžˆλŠ”λ°

λ°”λ‘œ this둜 μ°Έμ‘°ν•˜λŠ” λ³€μˆ˜μ˜ μƒνƒœλ₯Ό κ³„μ†ν•΄μ„œ 좔적해야 ν•©λ‹ˆλ‹€.
μ΄λŠ” μ»΄ν¬λ„ŒνŠΈμ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ 더 μΆ”μ ν•˜κΈ° μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€.

λ§Žμ€ λ¦¬μ•‘νŠΈ 개발자 뢄듀이 Angularλ₯Ό μ ‘ν•˜λ©΄ κ°€μž₯ νž˜λ“€μ–΄ ν•˜λŠ” 것이 this둜 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜λŠ” 것이 디버깅 ν•˜κΈ° μ–΄λ ΅λ‹€ λ§ν•©λ‹ˆλ‹€.
μ‹€μ œλ‘œ 저도 λ™μΌν•œ 개발 κ²½ν—˜μ„ ν•΄μ™”μŠ΅λ‹ˆλ‹€.

λ¦¬μ•‘νŠΈμ˜ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ λ„μž…

λ¦¬μ•‘νŠΈκ°€ μ§€κΈˆκΉŒμ§€ λΆ€λ™μ˜ 1μœ„ 자리λ₯Ό 지킬 수 있던 것은 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ λ„μž…μ΄λΌ μƒκ°ν•©λ‹ˆλ‹€.
λ¦¬μ•‘νŠΈλ„ μ΄ˆκΈ°μ—λŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜€μ§€λ§Œ λ¦¬μ•‘νŠΈ νŒ€μ—μ„œλ„ μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 것과 λ™μΌν•˜κ²Œ μƒνƒœλ₯Ό this둜 μΆ”μ ν•΄λ‚˜κ°€λ©΄ μ»΄ν¬λ„ŒνŠΈ λ‘œμ§μ„
μœ„ μ•„λž˜λ‘œ μ™”λ‹€κ°”λ‹€ ν•΄μ•Όν•˜λŠ” 것이 개발 κ²½ν—˜μ— μ’‹μ§€ λͺ»ν•¨μ„ μΈμ§€ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ λ‹¨μˆœν•¨κ³Ό μž₯점

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” μ•„μ£Ό λ‹¨μˆœν•©λ‹ˆλ‹€. ν•¨μˆ˜λ₯Ό μ‹€ν–‰ ν•  λΏμž…λ‹ˆλ‹€.
κ·Έ 과정쀑에 λ©”λͺ¨μ΄μ œμ΄μ…˜ 된 값은 μž¬ν™œμš©ν•˜κ³  가상 돔을 μ΄μš©ν•˜μ—¬ λ Œλ”λ§μ„ μ΅œμ ν™” ν•  λΏμž…λ‹ˆλ‹€.
κ·Έλž˜μ„œ λ¦¬μ•‘νŠΈμ˜ 훅듀은 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œ κ°€μž₯ 상단에 μ‘΄μž¬ν•΄μ•Ό ν•˜λŠ” 것도 이 λ•Œλ¬Έμž…λ‹ˆλ‹€.

비둝 λ¦¬λ Œλ”λ§ ν•˜λŠ” 것은 ν•¨μˆ˜λ₯Ό μž¬μ‹€ν–‰ ν•˜λŠ”κ²ƒμœΌλ‘œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— 내뢀에 λ§Žμ€ μ΅œμ ν™”λ₯Ό ν•΄μ•Ό ν•˜λŠ”κ²ƒλ„ λ§žμ§€λ§Œ,
κ·Έ 만큼 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈκ°€ 개발 κ²½ν—˜μ„ ν–₯상 μ‹œν‚€λŠ” 것은 μ‚¬μ‹€μž…λ‹ˆλ‹€.

λͺ©μ μ— 따라 ν•¨μˆ˜ν˜• λ˜λŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 개발자의 λͺ«μ΄μ§€λ§Œ μœ„μ™€ 같은 λ‚΄μš©μ„ λΆ„λͺ…νžˆ μΈμ§€ν•˜κ³  선택해야 ν•©λ‹ˆλ‹€.