useMemo()
와 useCallback()
정리하기
특정 결과값을 재사용할 때 사용하는
useMemo()
,
특정 함수를 새로 만들지 않고 재사용하고 싶을 때useCallback()
useCallback()
한번 만든 함수를 필요할 때만 새로 만들고 재사용하는 것
컴포넌트에서 props
가 바뀌지 않으면 Virtual DOM
에 새로 렌더링하는 것 조차 하지 않고 컴포넌트의 결과물을 재사용 하는 최적화 작업을 할건데, 이럴 경우 함수를 재사용하는 것은 필수
주의할 점은, 함수 안에서 사용하는 state
혹은 props
가 있다면 꼭, deps
배열안에 포함시켜야 된다는 것
props
로 받아온 함수가 있다면, 이 함수도 deps` 배열에 추가해야 함!doSomething
함수를 재사용하기// 적용후
const memoizedCallback = useCallback(
() => {
doSomething(a, b);
},
[a, b],
);
useMemo()
메모이제이션(memorization): 이전에 계산 한 값을 재사용한다는 의미를 가진다
computeExpensiveValue
함수를 실행한 결과를 memoizedValue
담기!// 적용후
const memoizedValue = useMemo(() =>
computeExpensiveValue(a, b)
, [a, b]);
React.memo
함수computeExpensiveValue
함수를 실행한 결과를 memoizedValue
담기!// 적용후
import React from 'react';
const User = (props) => {
return (
///
);
};
export default React.memo(User);