λμΌν κ²°κ³Όλ₯Ό λ μ μ μμ(CPU, λ©λͺ¨λ¦¬, λ€νΈμν¬ λ±)μΌλ‘ λ§λ€μ΄λ΄λ κΈ°μ μ μΈ λ Έλ ₯μ΄λ€.
νλ‘ νΈμλμμμ μ΅μ νλ λ¨μν λΉ λ₯΄κ² 보μ΄κ² νλ κ²λΏ μλλΌ, μ¬μ©μ κ²½ν(UX)μ ν₯μμν€κ³ , λΆνμν κ³μ°κ³Ό λ λλ§μ μ€μ¬ μ±λ₯μ κ°μ νλ κ²μ λͺ©νλ‘ νλ€.
Reactλ κΈ°λ³Έμ μΌλ‘ μνλ propsκ° λ³κ²½λ λ μ»΄ν¬λνΈλ₯Ό λ€μ λ λλ§νλ€. μ΄ κ³Όμ μμ λΆνμν μ°μ°μ΄λ ν¨μ μμ±, 리λ λλ§μ΄ λ°μνλ©΄ μ±μ μ±λ₯μ΄ λ¨μ΄μ§ μ μλ€. Reactλ λ€μκ³Ό κ°μ 3κ°μ§μ μ΅μ ν λ°©λ²μ΄ μλ€!
1. μ»΄ν¬λνΈ λ΄λΆμ λΆνμν μ°μ°μ λ°©μ§νλ€. β useMemo
λΆνμν ν¨μ μ¬μμ±μ λ§λλ€. β useCallback
μ»΄ν¬λνΈμ λΆνμν 리λ λλ§μ λ§λλ€. β React.memo
μ»΄ν¬λνΈ μΈλΆμμ λ΄λΆλ‘ κ°μ μ λ¬ν΄μ£Όλ λ°©λ²μ΄λ€.
function SayHello(props) {
return <p>μλ
νμΈμ, {props.name}λ!</p>;
}
<SayHello name="μμ§" />
sayHello("μμ§")μμ "μμ§"μ
<SayHello name="μμ§" />μ propsμΈ nameμ ν΄λΉνλ κ°μ΄λ€.
볡μ‘ν κ³μ° κ²°κ³Όλ₯Ό κΈ°μ΅ν΄μ, λΆνμνκ² λ€μ κ³μ°νμ§ μλλ‘ λ§μμ£Όλ React ν
μ΄λ€.
μ°μ°λμ΄ λ§μ μμ
μμ μ»΄ν¬λνΈκ° 리λ λλ§λ λλ§λ€ κ³μ°μ΄ λ°λ³΅λλκ² μκΉλ€κ³ λκ»΄μ§ λ μ¬μ©νλ€.
const memoizedValue = useMemo(() => {
// 볡μ‘ν μ°μ°
return κ³μ°κ²°κ³Ό;
}, [μμ‘΄κ°]);
μμ‘΄κ°μ΄ λ°λ λλ§ ν¨μλ₯Ό λ€μ μ€ννκ³ , λ°λμ§ μμΌλ©΄ μ΄μ κ²°κ³Όλ₯Ό μ¬μ¬μ©νλ€.
ν¨μλ₯Ό κΈ°μ΅ν΄μ, λΆνμνκ² λ§€λ² μλ‘ λ§λ€μ΄μ§λ κ±Έ λ°©μ§νλ React ν
μ΄λ€.
ν¨μκ° μμμ»΄ν¬λνΈμ propsλ‘ μ λ¬λλ©΄ μμ μ»΄ν¬λνΈλ λΆνμνκ² λ¦¬λ λλ§ λ μ μλ€. useCallbackλ₯Ό μ¬μ©νλ©΄, ν¨μμ μ°Έμ‘°λ₯Ό μ μ§ν΄μ 리λ λλ§μ μ΅μ νν μ μλ€.
const memoizedFunction = useCallback(() => {
// ν¨μ λ‘μ§
}, [μμ‘΄κ°]);
μμ‘΄κ°μ΄ λ°λμ§ μμΌλ©΄ ν¨μλ μ΄μ κ·Έλλ‘ μ¬μ¬μ©λλ€.
React.memoμ ν¨κ» μ°λ©΄ μμ μ»΄ν¬λνΈμ 리λ λλ§μ λ°©μ§ν μ μλ€.
μ»΄ν¬λνΈλ₯Ό κΈ°μ΅ν΄μ, propsκ° λ°λμ§ μμΌλ©΄ 리λ λλ§μ λ§μμ£Όλ κ³ μ°¨ μ»΄ν¬λνΈμ΄λ€.
μμ μ»΄ν¬λνΈκ° propsκ° λ°λμ§ μμλλ°λ κ³μ λ λλ§λ μ μλ€.
React.memoλ₯Ό μ¬μ©νλ©΄, propsκ° λ°λμ§ μλ ν 리λ λλ§μ μλ΅ν μ μλ€.
const MemoizedComponent = React.memo(MyComponent);
MyComponentλ₯Ό κΈ°μ΅λ μ»΄ν¬λνΈλ‘ λ§λ€μ΄propsκ° λ°λμ§ μμΌλ©΄ λ€μ λ λλ§νμ§ μλλ‘ νλ λ°©μμ΄λ€.
νλ‘ νΈμλ κ°λ°μ μ²μ μμνμ λλ, νλ©΄μ λ΄κ° μνλ UIκ° μ 보μ΄κΈ°λ§ νλ©΄ λμ΄λΌκ³ μκ°νμμλ€. κ·Έλ°λ° μμ¦ μ€μ νλ‘μ νΈλ₯Ό ν΄λ³΄λ©΄μ, νλ©΄μ μ무 μ΄μ μμ΄ λ³΄μ¬λ κ·Έ μμμ λΆνμν λ λλ§μ΄λ κ³μ°μ΄ κ³μ λ°μνκ³ μλ€λ κ²μ κΉ¨λ«κ² λμλ€. μ΄λ¬ν κ²λ€μ΄ μμ΄λ©΄ κ²°κ΅ μ¬μ©μ κ²½νμ μ’μ§ μμ μν₯μ μ€ μ μλ€λ κ²λ μκ² λμλ€.
μ΄λ²μ useMemo, useCallback, React.memo κ°μ μ΅μ ν κΈ°λ²μ λ°°μ°λ©΄μ,
μ¬μ©μμκ² λ μ’μ κ²½νμ μ£ΌκΈ° μν λ
Έλ ₯μ ν΄μΌκ² λ€λ μκ°μ΄ λ€μλ€.
μμ§μ μ΅μνμ§ μμ λΆλΆλ μμ§λ§...., μμΌλ‘λ λ¨μν κΈ°λ₯λ§ κ΅¬ννλ κ°λ°μκ° μλλΌ λΆνμν μ°μ°κ³Ό 리λ λλ§μ μμνκ³ , λ λμ μ±λ₯μ μν΄ κ³ λ―Όνλ κ°λ°μκ° λμ΄μΌκ² λ€λ μκ°μ΄ λ€μλ€.
μ΄λ―Έ 리μ‘νΈλ₯Ό ν΅λ¬νμ ¨κ΅°μ.