[231012] useMemo , useCallback

useMemo , useCallback

  • μ„±λŠ₯ μ΅œμ ν™”λ₯Ό μœ„ν•œ ν›… ν•¨μˆ˜
  • λ‘˜ λ‹€ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ ν•˜κ³  μƒˆλ‘œ κ³„μ‚°ν•˜λŠ” 것을 λ°©μ§€ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 데 도움을 μ€€λ‹€.
  • λ‚¨λ°œν•˜λ©΄ μ„±λŠ₯이 떨어짐, λ©”λͺ¨λ¦¬ ν• λ‹Ήν•˜κΈ° λ•Œλ¬Έμ— (μ°Έκ³ : https://velog.io/@lky5697/stop-using-usememo-now)

useMemo

  • 값을 λ©”λͺ¨μ΄μ œμ΄μ…˜ (μ›μ‹œκ°’)
  • λ³΅μž‘ν•œ λ©”λͺ¨ μ—¬λŸ¬λ²ˆ ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ μ‚¬μš©
import { useMemo } from "react"

function MyComponent({ data }) {
  // dataκ°€ 변경될 λ•Œλ§Œ expensiveCalculation ν•¨μˆ˜λ₯Ό λ‹€μ‹œ μ‹€ν–‰
  const result = useMemo(() => {
    return expensiveCalculation(data)
  }, [data])

  return <div>{result}</div>
}

useCallback

  • μ½œλ°±ν•¨μˆ˜ (참쑰값에 λŒ€ν•œ 것)
  • useCallback 을 쓰더라도 λΆ€λͺ¨κ°€ λ¦¬λ Œλ”λ§λ˜λ©΄ μžμ‹λ„ λ¦¬λ Œλ”λ§ λœλ‹€.
  • 결과적으둜, μžμ‹ μ»΄ν¬λ„ŒνŠΈλ₯Ό react memo 둜 λ°”κΏ”μ•Ό μžμ‹μ»΄ν¬λ„ŒνŠΈκ°€ useCallback을 μ‚¬μš©ν•˜κ³  μžˆλŠ” μ½œλ°±ν•¨μˆ˜λ„ λ©”λͺ¨μ΄μ œμ΄μ…˜μ΄ μ œλŒ€λ‘œ 됨
import { useCallback } from "react"

function MyComponent({ onClick }) {
  const handleClick = useCallback(() => {
    // 클릭 이벀트 ν•Έλ“€λŸ¬
  }, []) // 빈 μ˜μ‘΄μ„± λ°°μ—΄: ν•Έλ“€λŸ¬λŠ” 항상 λ™μΌν•œ ν•¨μˆ˜λ₯Ό λ°˜ν™˜

  return <button onClick={handleClick}>Click Me</button>
}

Categories:

Updated:

Leave a comment