useState와 useMemo의 차이점이 무엇인가

useState vs. useMemo

useState와 useMemo의 주요 차이점

결론

useCallback

useCallback을 사용해야 하는 경우

  1. 함수를 자식 컴포넌트에 prop으로 전달할 때, 함수가 자주 재생성되어 자식 컴포넌트가 불필요하게 리렌더링 되는 상황.
  2. useEffect의 의존성 배열에 함수가 포함될 때, 함수가 매번 새로 생성되지 않도록 안정적으로 참조를 유지하고 싶을 때.
  3. 비용이 큰 함수 생성을 방지하고 성능 최적화가 필요할 때.

함수를 자식 컴포넌트에 전달할 때 리렌더링 방지

부모 컴포넌트에서 자식 컴포넌트로 함수를 prop으로 전달할 때, 부모 컴포넌트가 렌더링 될 때마다 함수가 새로 생성됨. useCallback을 사용하면, 해당 함수가 메모이제이션되어 의존성이 변경되지 않는 한 재생성되지 않도록 할 수 있다.

import React, { useState, useCallback } from "react";
import ChildComponent from "./ChildComponent";

const ParentComponent = () => {
  const [count, setCount] = useState(0);
  const [text, setText] = useState("");

  // setTextHandler 함수는 매번 재생성되지 않고 메모이제이션됨
  const setTextHandler = useCallback((value) => {
    setText(value);
  }, []);

  return (
    <div>
      <h1>Count: {count}</h1>
      <button onClick={() => setCount(count + 1)}>Increment</button>
      {/* 자식 컴포넌트에 setTextHandler 함수를 전달 */}
      <ChildComponent onChange={setTextHandler} />
    </div>
  );
};

export default ParentComponent;