반응형
React에서 useCallback은 함수를 메모리에 저장하여 성능을 최적화하는데 유용하다.
부모 컴포넌트가 여러 항목을 관리하고, 각 항목을 업데이트하는 기능을 자식 컴포넌트에게 전달하는 상황이다.
useCallback을 사용하면 부모 컴포넌트에서 자식 컴포넌트로 전달되는 함수가 불필요하게 재생성되는 것을 방지할 수 있다.
import React, { useState, useCallback } from 'react';
function Item({ item, onUpdate }) {
return (
<div>
<p>{item.content}</p>
<button onClick={() => onUpdate(item.id, `업데이트된 내용: ${item.content}`)}>업데이트</button>
</div>
);
}
function ItemList() {
const [items, setItems] = useState([
{ id: 1, content: '항목 1' },
{ id: 2, content: '항목 2' },
// 추가 항목들...
]);
// useCallback을 사용해 아이템 업데이트 함수를 생성한다
const updateItem = useCallback((itemId, newContent) => {
setItems(prevItems =>
prevItems.map(item =>
item.id === itemId ? { ...item, content: newContent } : item
)
);
}, []);
return (
<div>
{items.map(item => (
<Item key={item.id} item={item} onUpdate={updateItem} />
))}
</div>
);
}
export default ItemList;
이 코드에서 ItemList 컴포넌트는 여러 Item 컴포넌트를 렌더링한다.
각 Item 컴포넌트에는 항목을 업데이트하는 버튼이 포함되어 있으며, 이 버튼을 클릭하면 ItemList의 updateItem 함수가 실행된다. useCallback 훅을 사용해 updateItem 함수를 메모리에 저장함으로써, ItemList 컴포넌트가 리렌더링될 때마다 함수가 재생성되는 것을 방지한다.
이는 특히 항목 리스트가 크고 복잡한 경우 성능에 큰 영향을 미칠 수 있다.
이 예제는 useCallback을 사용하는 보다 복잡한 상황을 설명한다.
부모 컴포넌트가 자식 컴포넌트에 콜백 함수를 전달하는 경우, useCallback을 사용하면 함수가 불필요하게 재생성되는 것을 방지하여 큰 규모의 복잡한 애플리케이션에서 성능 최적화에 도움이 된다.
반응형
'IT > React' 카테고리의 다른 글
CRA에서 Vite로 전환, Vite 시작, Vite 설치하기 (2) | 2024.02.08 |
---|---|
React에서 여러 상태 한 번에 관리하는 hook(훅) 만들기 (0) | 2024.01.25 |
react-query와 Recoil 통합하기: 세부 설정부터 렌더링까지 (0) | 2023.09.21 |
[React]Mac에서 git 사용시 xcrun error 발생시 해결 방법 (0) | 2022.11.20 |
[React] Material-ui 설치 안될때 해결법 (1) | 2022.06.29 |