useState
는 리액트 컴포넌트의 상태를 관리하는 훅으로 상태값을 저장하고, 상태를 업데이트하면 컴포넌트가 다시 렌더링됨useMemo
는 계산된 값을 메모이제이션(기억)하여 불필요한 재계산을 방지함. 렌더링 중 값이 변하지 않으면 기존에 계산된 값을 재사용하여 성능을 최적화하는 데 사용됨비동기 작업
을 통해 데이터를 가져오거나 상태 업데이트가 필요한 경우에는 useEffect와 useState를 사용하는 것이 적절함순수하게 계산된 값을 메모이제이션
하고, 성능을 최적화하고자 한다면 useMemo가 적합함. useMemo는 동기적 계산만 처리하기 때문에, 비동기 작업을 할 수 없음부모 컴포넌트에서 자식 컴포넌트로 함수를 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;