| title | λλ²κΉ λ° λ¬Έμ ν΄κ²° |
|---|
- μ»΄νμΌλ¬ μ€λ₯μ λ°νμ λ¬Έμ μ μ°¨μ΄
- μ»΄νμΌμ λ°©ν΄νλ μΌλ°μ μΈ ν¨ν΄
- λ¨κ³λ³ λλ²κΉ μν¬νλ‘μ°
React μ»΄νμΌλ¬λ Reactμ κ·μΉμ λ°λ₯΄λ μ½λλ₯Ό μ²λ¦¬νλλ‘ μ€κ³λμμ΅λλ€. μ΄λ¬ν κ·μΉμ μλ°ν μ μλ μ½λλ₯Ό λ§λλ©΄ μ±μ λμμ λ³κ²½νλ μνμ κ°μνκΈ°λ³΄λ€ μμ νκ² μ΅μ νλ₯Ό 건λλλλ€.
μ»΄νμΌλ¬ μ€λ₯λ λΉλ μμ μ λ°μνλ©° μ½λκ° μ»΄νμΌλμ§ μκ² ν©λλ€. μ»΄νμΌλ¬λ λ¬Έμ κ° μλ μ½λλ₯Ό μ€ν¨μν€κΈ°λ³΄λ€ 건λλ°λλ‘ μ€κ³λμ΄ μκΈ° λλ¬Έμ μ΄λ¬ν μ€λ₯λ μμ£Ό λ°μνμ§ μμ΅λλ€.
λ°νμ λ¬Έμ λ μ»΄νμΌλ μ½λκ° μμκ³Ό λ€λ₯΄κ² λμν λ λ°μν©λλ€. React μ»΄νμΌλ¬ κ΄λ ¨ λ¬Έμ κ° λ°μνλ©΄ λλΆλΆ λ°νμ λ¬Έμ μ λλ€. μ΄λ μΌλ°μ μΌλ‘ μ»΄νμΌλ¬κ° κ°μ§ν μ μλ λ―Έλ¬ν λ°©μμΌλ‘ μ½λκ° Reactμ κ·μΉμ μλ°νκ³ , μ»΄νμΌλ¬κ° 건λλ°μ΄μΌ νλ μ»΄ν¬λνΈλ₯Ό μ€μλ‘ μ»΄νμΌνμ λ λ°μν©λλ€.
λ°νμ λ¬Έμ λ₯Ό λλ²κΉ ν λλ ESLint κ·μΉμ΄ κ°μ§νμ§ λͺ»ν μν₯λ°λ μ»΄ν¬λνΈμ React κ·μΉ μλ°μ μ°Ύλ λ° μ§μ€νμΈμ. μ»΄νμΌλ¬λ μ½λκ° μ΄λ¬ν κ·μΉμ λ°λ₯Έλ€κ³ κ°μ νλ©°, κ°μ§ν μ μλ λ°©μμΌλ‘ κ·μΉμ΄ μλ°λλ©΄ λ°νμ λ¬Έμ κ° λ°μν©λλ€.
React μ»΄νμΌλ¬κ° μ±μ λ§κ°λ¨λ¦΄ μ μλ μ£Όμ μμΈ μ€ νλλ μ½λκ° μ νμ±μ μν΄ λ©λͺ¨μ΄μ μ΄μ μ μμ‘΄νλλ‘ μμ±λ κ²½μ°μ λλ€. μ΄λ μ±μ΄ μ λλ‘ μλνκΈ° μν΄ νΉμ κ°μ΄ λ©λͺ¨μ΄μ μ΄μ λλ κ²μ μμ‘΄νλ€λ μλ―Έμ λλ€. μ»΄νμΌλ¬κ° μλ λ°©μκ³Ό λ€λ₯΄κ² λ©λͺ¨μ΄μ μ΄μ ν μ μμΌλ―λ‘, Effectκ° κ³Όλνκ² μ€νλκ±°λ 무ν 루νκ° λ°μνκ±°λ μ λ°μ΄νΈκ° λλ½λλ λ±μ μμμΉ λͺ»ν λμμ΄ λ°μν μ μμ΅λλ€.
μ΄λ° μν©μ΄ λ°μνλ μΌλ°μ μΈ μλ리μ€λ λ€μκ³Ό κ°μ΅λλ€.
- μ°Έμ‘° λλ±μ±μ μμ‘΄νλ Effect - Effectκ° λ λλ§ κ°μ λμΌν μ°Έμ‘°λ₯Ό μ μ§νλ κ°μ²΄λ λ°°μ΄μ μμ‘΄νλ κ²½μ°
- μμ μ μΈ μ°Έμ‘°κ° νμν μμ‘΄μ± λ°°μ΄ - λΆμμ ν μμ‘΄μ±μ΄ Effectλ₯Ό λ무 μμ£Ό μ€ννκ±°λ 무ν 루νλ₯Ό μμ±νλ κ²½μ°
- μ°Έμ‘° κ²μ¬ κΈ°λ° μ‘°κ±΄λΆ λ‘μ§ - μ½λκ° μΊμ±μ΄λ μ΅μ νλ₯Ό μν΄ μ°Έμ‘° λλ±μ± κ²μ¬λ₯Ό μ¬μ©νλ κ²½μ°
λ¬Έμ κ° λ°μνλ©΄ λ€μ λ¨κ³λ₯Ό λ°λ₯΄μΈμ.
λΉλλ₯Ό μμμΉ μκ² μ€λ¨μν€λ μ»΄νμΌλ¬ μ€λ₯κ° λ°μνλ©΄ μ»΄νμΌλ¬μ λ²κ·ΈμΌ κ°λ₯μ±μ΄ λμ΅λλ€. λ€μ μ 보μ ν¨κ» facebook/react μ μ₯μμ λ³΄κ³ ν΄ μ£ΌμΈμ.
- μ€λ₯ λ©μμ§
- μ€λ₯λ₯Ό λ°μμν¨ μ½λ
- React λ° μ»΄νμΌλ¬ λ²μ
λ°νμ λμ λ¬Έμ μ κ²½μ° λ€μμ νμΈνμΈμ.
"use no memo"λ₯Ό μ¬μ©νμ¬ λ¬Έμ κ° μ»΄νμΌλ¬μ κ΄λ ¨μ΄ μλμ§ νμΈν©λλ€.
function ProblematicComponent() {
"use no memo"; // μ΄ μ»΄ν¬λνΈμ μ»΄νμΌ κ±΄λλ°κΈ°
// ... λλ¨Έμ§ μ»΄ν¬λνΈ
}λ¬Έμ κ° μ¬λΌμ§λ©΄ React κ·μΉ μλ°κ³Ό κ΄λ ¨μ΄ μμ κ°λ₯μ±μ΄ λμ΅λλ€.
λ¬Έμ κ° μλ μ»΄ν¬λνΈμμ μλ λ©λͺ¨μ΄μ μ΄μ
(useMemo, useCallback, memo)μ μ κ±°νμ¬ λ©λͺ¨μ΄μ μ΄μ
μμ΄λ μ±μ΄ μ¬λ°λ₯΄κ² μλνλμ§ νμΈν΄ λ³Ό μλ μμ΅λλ€. λͺ¨λ λ©λͺ¨μ΄μ μ΄μ
μ μ κ±°ν΄λ λ²κ·Έκ° κ³μ λ°μνλ©΄ μμ ν΄μΌ ν React κ·μΉ μλ°μ΄ μλ κ²μ
λλ€.
- κ·Όλ³Έ μμΈ μλ³ (μ£Όλ‘ μ νμ±μ μν λ©λͺ¨μ΄μ μ΄μ )
- κ° μμ ν ν μ€νΈ
- μμ μλ£ ν
"use no memo"μ κ±° - React DevToolsμμ μ»΄ν¬λνΈμ β¨ λ°°μ§κ° νμλλμ§ νμΈ
μ»΄νμΌλ¬ λ²κ·Έλ₯Ό λ°κ²¬νλ€κ³ μκ°λλ©΄ λ€μμ νμΈνμΈμ.
- React κ·μΉ μλ°μ΄ μλμ§ νμΈ - ESLintλ‘ κ²μ¬
- μ΅μ μ¬ν μ¬λ‘ μμ± - μμ μμλ‘ λ¬Έμ 격리
- μ»΄νμΌλ¬ μμ΄ ν μ€νΈ - μ»΄νμΌ μμλ§ λ¬Έμ κ° λ°μνλμ§ νμΈ
- μ΄μ λ±λ‘:
- React λ° μ»΄νμΌλ¬ λ²μ
- μ΅μ μ¬ν μ½λ
- μμ λμ vs μ€μ λμ
- μ€λ₯ λ©μμ§
- λ¬Έμ μλ°©μ μν΄ Reactμ κ·μΉ κ²ν
- μ μ§μ λ°°ν¬ μ λ΅μ μν μ μ§μ λμ κ°μ΄λ νμΈ