Memoization
Reactμμλ μμ μ»΄ν¬λνΈκ° 리λ λλ§λκ±°λ, ν΄λΉ μ»΄ν¬λνΈμ μνκ° λ³κ²½λ κ²½μ°μ 리λ λλ§μ μννλ€.
λΆνμν 리λ λλ§
μμ μ½λλ λ²νΌμ ν΄λ¦νμ λ count
κ° 1μ© λν΄μ§λ κ°λ¨ν μμ μ΄λ€. λ²νΌμ ν΄λ¦νλ©΄ App
, CounterButton
, Description
μ»΄ν¬λνΈκ° λͺ¨λ 리λ λλ§λλ€.
κ·Έλ¬λ Description
μ»΄ν¬λνΈκ° λ€μ 리λ λλ§λμ΄μΌ ν νμκ° μμκΉ? Description
μ»΄ν¬λνΈλ count
μ λ³κ²½μ κ΄κ³μμ΄ λμΌν κ²°κ³Όλ‘ λ λλ§λ κ²μ΄λ€. λ§μ½ Description
μ»΄ν¬λνΈκ° λ§μ νμ μ»΄ν¬λνΈ λλ λ‘μ§μ ν¬ν¨νκ³ μμ΄ λ¦¬λ λλ§νλ λ° λ§μ 리μμ€κ° μμλλ€λ©΄, λΆνμν 리λ λλ§μ μν μ±λ₯ λ¬Έμ κ° λ°μν μ μλ€.
μ΄λ¬ν 'λΆνμν 리λ λλ§' λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ Reactμμλ μ»΄ν¬λνΈ, κ°, ν¨μλ₯Ό λ©λͺ¨μ΄μ μ΄μ
νλ memo
, useMemo
, useCallback
APIλ₯Ό μ 곡νλ€.
memo
Description
μ»΄ν¬λνΈλ₯Ό μμ κ°μ΄ λ³κ²½νλ©΄, CounterButton
μ ν΄λ¦ν΄λ Description
μ»΄ν¬λνΈκ° 리λ λλ§λμ§ μλλ€.
memoλ λ§λ₯μ΄ μλλ€
μ»΄ν¬λνΈλ₯Ό memo
λ‘ κ°μμμλ λΆκ΅¬νκ³ , 리λ λλ§λλ λͺ κ°μ§ μ¬λ‘κ° μλ€.
propsκ° λ³κ²½λμμ λ
CounterButton
μ»΄ν¬λνΈλ count
μνκ° λ³κ²½λλ©΄ 리λ λλ§λλ€. onClick
ν¨μκ° λ³κ²½λμμ λμλ λ§μ°¬κ°μ§μ΄λ€. λΉμ°ν κ²μ²λΌ 보μ΄μ§λ§ μ΄λ μλλμ§ μμ λμμ λ°μμν¬ μ μλ€.
Reactλ μμ λΉκ΅λ₯Ό ν΅ν΄ propsλ₯Ό λΉκ΅νλ€. μμ λΉκ΅λ‘ κ°μ²΄λ λ°°μ΄, ν¨μλ₯Ό λΉκ΅νλ©΄, μ΄μ μ κ°κ³Ό λμΌνλλΌλ μ°Έμ‘°κ° λμΌνμ§μ λν μ¬λΆλ₯Ό λ°μ§λ€. κ·Έλ¬λ―λ‘ μμ μ»΄ν¬λνΈμμ λ λλ§ν λλ§λ€ κ°μ²΄, λ°°μ΄, ν¨μλ₯Ό λ€μ μμ±νλ€λ©΄ memoλ μ»΄ν¬λνΈ λν propsκ° λ³κ²½λ κ²μΌλ‘ κ°μ£Όν΄ 리λ λλ§μ λ°μμν¨λ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ useMemo
, useCallback
μ μ¬μ©νκ±°λ, μ΄ν μ€λͺ
ν arePropsEqual
νλΌλ―Έν°λ₯Ό μ¬μ©ν μ μλ€.
μ»΄ν¬λνΈ λ΄λΆμ μνκ° λ³κ²½λμμ λ
memo
HOC(κ³ μ°¨ μ»΄ν¬λνΈ)μλ λ λ²μ§Έ μΈμλ‘ arePropsEqual
νλΌλ―Έν°λ₯Ό μΆκ°ν μ μλ€.
μ μμ μ arePropsEqual
ν¨μλ points
κ°μ²΄μ κ°μ΄ λ³κ²½λμλμ§λ₯Ό νμΈν΄, λ³κ²½λμ§ μμλ€λ©΄ true
, λ³κ²½λμμΌλ©΄ false
λ₯Ό λ°ννλ€. μ°Έμ‘°κ° μλ κ°μ λΉκ΅νκΈ° λλ¬Έμ points
κ° λΆλͺ¨ μ»΄ν¬λνΈμμ μ¬μμ±λμ΄ μ°Έμ‘°κ° λ³κ²½λμ΄λ, κ°μ΄ λ³νμ§ μμλ€λ©΄ Chart
μ»΄ν¬λνΈλ 리λ λλ§λμ§ μλλ€.
μ»΄ν¬λνΈ λ΄λΆμμ Contextλ₯Ό μ¬μ©νκ³ μμ λ
μ μμ μμ globalContext
μ count
μνκ° λ³κ²½λλ€λ©΄ CounterButton
μ΄ λ¦¬λ λλ§λλ€. μ¬κΈ°μ μ£Όμν μ μ globalContext
μ λ€λ₯Έ μνκ° μ‘΄μ¬νκ³ , μ΄ μνκ° λ³κ²½λλ€λ©΄ CounterButton
μμ κ·Έ μνλ₯Ό μ¬μ©νκ³ μμ§ μμμλ 리λ λλ§λλ€λ κ²μ΄λ€.
μ΄λ₯Ό λ°©μ§νλ λ°©λ²μ useContext
μ¬μ©λΆλ₯Ό λΆλͺ¨ μ»΄ν¬λνΈλ‘ μ΄λμμΌ, count
λ₯Ό propsλ‘ μ λ¬νλ κ²μ΄λ€.
useMemo
μμ μμ μμ Chart
κ° λ¦¬λ λλ§ λ λλ§λ€ points
λ λ€μ κ³μ°λλ€. calculatePoints
κ° λ¬΄κ±°μ΄ λ‘μ§μΌ λ, λΆνμν μ¬κ³μ°μ λ§κΈ° μν΄ useMemo
λ₯Ό μ¬μ©ν μ μλ€. memorizedPoints
λ μμ‘΄μ± λ°°μ΄μ ν¬ν¨λ data
λ₯Ό Object.is
(μμ λΉκ΅)λ‘ λΉκ΅ν΄ λ³νλ₯Ό κ°μ§νκ³ , data
κ° λ³κ²½λμμ λμ νν΄ μΊμ±μ 무ν¨νν΄ κ³μ°μ μννλ€.
memoμ ν¨κ» μ¬μ©νκΈ°
μ μμ μ points
λ₯Ό propμΌλ‘ λκ²¨μ€ κ²½μ°, Chart
κ° λ¦¬λ λλ§ λ λλ§λ€ points
μ μ°Έμ‘°κ° λ³κ²½λκ³ , κ°μ΄ λ³κ²½λμ§ μμμμλ ChartInner
μ μ°μμ μΈ λ¦¬λ λλ§μ΄ λ°μνλ€. λ°λ©΄μ memorizedPoints
λ₯Ό λ겨μ€λ€λ©΄ data
κ° λ³κ²½λμ§ μλ ν λμΌν μ°Έμ‘°λ₯Ό κ°κΈ° λλ¬Έμ λΆνμν 리λ λλ§μ΄ λ°μνμ§ μλλ€.
μ£Όμμ¬ν
useMemoλ Strict Modeμμ λ λ² νΈμΆλλ€.
memoμ λ§μ°¬κ°μ§λ‘ μμ λΉκ΅λ‘ μμ‘΄μ± λ°°μ΄μ λΉκ΅νκΈ° λλ¬Έμ, κ°μ²΄ λ±μ μμ‘΄μ± λ°°μ΄μ λ£μ λ μ μμ μΌλ‘ λ©λͺ¨μ΄μ μ΄μ λμ΄μλμ§ νμΈν΄μΌ νλ€.
μμ‘΄μ± λ°°μ΄μ μ μνμ§ μμΌλ©΄ μ»΄ν¬λνΈκ° 리λ λλ§λ λλ§λ€ λ€μ νΈμΆλλ€.
useCallback
useMemo
κ° λ³μλ₯Ό μΊμ±νλ€λ©΄, useCallback
μ ν¨μλ₯Ό μΊμ±νλ€.
μ μμ μμ λ ν¨μμ μλμ λμΌνλ€. νμ§λ§ ν¨μλ₯Ό μΊμ±ν λλ ν¨μμ©μΌλ‘ μ 곡λλ useCallback
μ μ¬μ©νλ κ²μ΄ κ°λ
μ± λ©΄μμ μ’λ€.
useMemo
μ λμΌνκ² memo
λ‘ κ°μΈμ§ μ»΄ν¬λνΈμ λΆνμν 리λ λλ§μ λ°©μ§νλ λ° μ¬μ©λ μ μμΌλ©°, μμ‘΄μ± λ°°μ΄μ μμ λΉκ΅λ₯Ό μ£Όμν΄μΌ νλ€.
μ λΆ λ©λͺ¨ν΄μΌ ν κΉ?
memo
, useMemo
, useCallback
μ λν΄ μμ보μλ€. μ΄ μ΅μ ν κΈ°λ²λ€μ μΈμ μ¬μ©νλ κ²μ΄ μ’μκΉ? λ λλ§μ΄ μμ£Ό λ°μνλ μ»΄ν¬λνΈ? κ³μ° λ‘μ§μ΄ 볡μ‘ν μ»΄ν¬λνΈ? νλ¨νκΈ° μ΄λ €μ°λ μ λΆ λ€?
λ©λͺ¨μ΄μ μ΄μ μ κΈ°μ€μ λν΄μλ μ¬λ¬ μκ²¬μ΄ μ‘΄μ¬νκ³ , μ΄λ€ κ²μ΄ μ£λΆλ¦¬ μ’λ€λΌκ³ λ§νκΈ° μ΄λ €μ΄ μ£Όμ μ΄κΈ°λ νλ€. React νμμλ λ©λͺ¨μ΄μ μ΄μ λν λΉμ©μ΄κΈ° λλ¬Έμ, λΆνμν λ©λͺ¨μ΄μ μ΄μ μ λ체νλ λ°©μλ€μ μ μνλ€.
λͺ κ°μ§ μμΉμ λ°λ₯΄λ©΄ λ§μ λ©λͺ¨μ΄μ μ΄μ μ λΆνμνκ² λ§λ€ μ μμ΅λλ€.
- React 곡μ λ¬Έμ
λ©λͺ¨μ΄μ μ΄μ μ λ체ν μ μλ λ°©λ²μ λν΄ μ€λͺ ν λ€λ₯Έ μ’μ κΈλ 첨λΆνλ€.
μ°Έκ³ λ¬Έμ
Last updated