개발 - Next.js
Next js (넥스트 js)- Hook 4편 - useCallback
벌꿀오소리 엘
2024. 10. 17. 10:40
4편 useCallback에 대해서 포스팅 시작합니다.
useCallback 이란 ?
- 성능 최적화가 목표.
- 주로 함수가 불필요하게 다시 생성되는 것을 방지.
- 함수를 기억해서, 컴포넌트가 리렌더링 될 때, 함수 재생성을 막음 , useEffect와 마찬가지로, 의존성 배열에 의해, 필요시에만 재 생성.
useCallback 형태
const memoizedCallback = useCallback(() => {
// 실행될 함수 내용
}, [dependencies]);
useCallback 사용 시기
- 자식 컴포넌트가 자주 리 렌더링 될 떄
- 특히 자식 컴포넌트에 props로 넘길 때, 자식 컴포넌트가 변할 떄 마다 리렌더링이 발생하는데, 불필요한 리렌더링을 막을 수 있음
- 큰 리소스, 연산규모가 큰 함수 일 떄
- 부모 컴포넌트에서 자주 리렌더링이 발생할 때
- 부모 컴포넌트에서 자식컴포넌트로 함수를 전달한다면, 부모 컴포넌트가 리렌더링 될 떄 마다, 자식컴포넌트도 리렌더링이 되는데, 그를 막기 위함.
useCallback 예시
1) 사용하지 않을 때,
const ParentComponent = () => {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
return <ChildComponent increment={increment} />;
};
- increment 함수를 자식 컴포넌트에게 전달하기 때문에, ChildComponent(자식 컴포넌트) 도 계속 리렌더링 됨
2) 사용할 때
const ParentComponent = () => {
const [count, setCount] = useState(0);
const increment = useCallback(() => {
setCount(count + 1);
}, [count]); // count가 변경될 때만 함수가 다시 생성
return <ChildComponent increment={increment} />;
};
- count 값이 변할 때만 다시 생성되게 함으로써, 불필요한 함수 생성과 자식 컴포넌트 리렌더링 막아줌.
이렇게
useCallback에 대해 알아보았다.
다른 hook에 비해 간단하고 쉽다.
하지만 사용 할 장소를 잘 골라야 한다.
도움이 되셨다면
댓글과 좋아요 부탁드립니다.