프론트엔드/React

React Hooks 5 - memoization

장쫑이이 2024. 8. 19. 19:04

 

 

memoization

 

1. 리렌더링의 발생 조건

- state가 변경, props가 변경, 부모 컴포넌트가 리렌더링되는 경우

 

2. 최적화

memo(React.memo) : 컴포넌트를 캐싱

useCallback : 함수를 캐싱

useMemo : 값을 캐싱

 

 

1. memo 사용 방법

// 각각의 파일에서 export를 시킴

export default React.memo(Box1);
export default React.memo(Box2);
export default React.memo(Box3);

 

이렇게 하는 경우 렌더링 되는 파일만 렌더링이되고 그 외 파일들은 리렌더링 되지 않음

 

 

 

2. useCallback 사용 방법

memo는 컴포넌트를 메모이제이션 했다면, useCallback은 인자로 들어오는 함수 자체를 기억(메모이제이션)

// 변경 전
const initCount = () => {
  setCount(0);
};

// 변경 후
const initCount = useCallback(() => {
  setCount(0);
}, []);

 

 

 

3. useMemo 사용 방법

맨 처음 값을 반환할 때 그 값을 메모리에 저장 > 필요할 때 마다 함수가 아닌 저장한 값을 꺼내서 사용 > 캐싱을 한다 라고 표현

 

// 변경 전
const value = 반환할_함수();

// 변경 후
const value = useMemo(()=> {
	return 반환할_함수()
}, [dependencyArray]);

 

 

주의 사항

어찌보면 사용할때 마다 별도의 메모리를 잡아먹게 되기 때문에 성능이 악화될 수 있음