π§ μ»΄ν¬λνΈ λ λλ§ κ³Όμ
μ»΄ν¬λνΈκ° λ λλ§ λλ€λ κ²μ κ·Έ ν¨μ(μ»΄ν¬λνΈ)λ₯Ό νΈμΆνμ¬μ μ€ν(rendering)λλ κ²μ λ§νλ€. ν¨μκ° μ€νλ λλ§λ€ λ΄λΆμ μ μΈλμ΄ μλ ννμ(λ³μ
, ν¨μ
λ±)λ λ§€λ² λ€μ μ μΈλμ΄ μ¬μ©λλ€.
μ»΄ν¬λνΈλ μμ μ stateκ° λ³κ²½λκ±°λ, λΆλͺ¨μκ²μ λ°λ propsκ° λ³κ²½λμκ±°λ, λΆλͺ¨ μ»΄ν¬λνΈκ° λ λλ§ λ λλ§λ€ 리λ λλ§
λλ€.
(μ¬μ§μ΄ νμ μ»΄ν¬λνΈμ μ΅μ ν μ€μ μ ν΄μ£Όμ§ μμΌλ©΄ λΆλͺ¨μκ²μ λ°λ propsκ° λ³κ²½λμ§ μμλλΌλ 리λ λλ§ λ¨. )
μ¦, 리λ λλ§μ΄ νμμλ λ³μ, ν¨μλ€λ§μ κ°μ΄ μ¬λ λλ§λλ―λ‘ λλΉ, λΉν¨μ¨μ μ΄λ€.
(μ»΄ν¬λνΈμμ λ λλ§ κ²°κ³Όμ μ ν μν₯μ λ―ΈμΉμ§ μλ λ³κ²½μ¬νμ΄ λ°μνκ² λλ€λ©΄, λΆνμν λ λλ§μ΄ λ°μ νλ―λ‘ μ±λ₯ μμ€μ΄ λ°μνλ€. μ΄λ λ λλ§μμ μννλ λ‘μ§μ΄ λ§μ μλ‘, λ§μ μ»΄ν¬λνΈλ₯Ό μΆλ ₯ν μλ‘ μμ€μ λ°°κ° λλ€.)
π§ λ©λͺ¨μ΄μ μ΄μ (memoization)μ κ°λ
"λ©λͺ¨μ΄μ μ΄μ (memoization)μ μ»΄ν¨ν° νλ‘κ·Έλ¨μ΄ λμΌν κ³μ°μ λ°λ³΅ν΄μΌ ν λ, μ΄μ μ κ³μ°ν κ°μ λ©λͺ¨λ¦¬μ μ μ₯ν¨μΌλ‘μ¨ λμΌν κ³μ°μ λ°λ³΅ μνμ μ κ±°νμ¬ νλ‘κ·Έλ¨ μ€ν μλλ₯Ό λΉ λ₯΄κ² νλ κΈ°μ μ΄λ€. λμ κ³νλ²μ ν΅μ¬μ΄ λλ κΈ°μ μ΄λ€."
useMemo
μ useCallback
μ λ©λͺ¨μ΄μ μ΄μ
κΈ°λ₯μ μ§μνλ 리μ‘νΈμ λ΄μ₯ ν
(hook)μΌλ‘, νΌν¬λ¨Όμ€ μ΅μ νλ₯Ό μνμ¬ μ¬μ©λλ€.useMemo
λ λ©λͺ¨μ΄μ μ΄μ
λ κ°μ λ°ννλ€.(κ°μ κΈ°μ΅νλ€)useCallback
μ λ©λͺ¨μ΄μ μ΄μ
λ μ½λ°±(=ν¨μ)μ λ°ννλ€.(ν¨μλ₯Ό κΈ°μ΅νλ€)useCallback(fn, deps)
/ useMemo(() => fn, deps)
μ κ°λ€κ³ νλ€. // use memo const memoizedValue = useMemo(() => value(a,b), [a,b]); // λ©λͺ¨μ΄μ μ΄μ λ κ° const memoizedCallback = useCallback(() => fn(a,b), [a,b]); // λ©λͺ¨μ΄μ μ΄μ λ μ½λ°±
βοΈ λλ²μ§Έ μΈμ(=deps)λ‘ λΉλ°°μ΄([])μ λ£μΌλ©΄ μ΄λ€ μν κ°μλ λ°μνμ§ μμΌλ©°, λͺ¨λ μν λ³νμ λ°μνλ€(λͺ¨λ λ λλ§μ λ³ν μμ΄ μ μ₯λ κ°μ λΆλ¬μ€λ μ .)
리μ‘νΈλ λ©λͺ¨μ΄μ μ΄μ μ μν μΈκ°μ apiλ₯Ό μ 곡.
리μ‘νΈ λ©λͺ¨μ΄μ μ΄μ νΉμ§ : λ°λ‘ μ΄μ μ κ°λ§ λ©λͺ¨μ΄μ μ΄μ νλ€
λ©λͺ¨μ΄μ μ΄μ μ΄μ
// μΌλ° React ν¨μν μ»΄ν¬λνΈ function Component() { const [count, setCount] = useState(0) const doubleCount = count * 2 // λλ°°λ‘ κ³μ°ν κ° μΆλ ₯ return ( <> <button onClick={() => setCount(count + 1)}> μΉ΄μ΄νΈ </button> </> ) } // useMemo μ¬μ© import React, {useMemo} from 'react'; function Component() { const [count, setCount] = useState(0) const doubleCount = useMemo(() => count * 2, [count]) // κ° μ체μ useCallback μ¬μ© return ( <> <button onClick={() => setCount(count + 1)}> μΉ΄μ΄νΈ </button> </> ) }
// μΌλ° React ν¨μν μ»΄ν¬λνΈ function Component() { const [count, setCount] = useState(0) const handleClick = () => console.log('clicked!') return ( <> <button onClick={() => setCount(count + 1)}> μΉ΄μ΄νΈ </button> <button onClick={handleClick}>ν΄λ¦ν΄λ³΄μΈμ!</button> </> ) } // useCallback μ¬μ© function Component() { const [count, setCount] = React.useState(0) const handleClick = useCallback( () => console.log('clicked!'), []) // ν¨μ μ체μ useCallback μ¬μ© return ( <> <button onClick={() => setCount(count + 1)}> μΉ΄μ΄νΈ </button> <button onClick={handleClick}>ν΄λ¦ν΄λ³΄μΈμ!</button> </> ) }