Front-end/React

[React] 훅(Hook) - useMemo

늘이 2023. 9. 3. 16:01

 

1. 정의

- 컴포넌트가 재렌더링 되면 그 속에 자식 컴포넌트도 항상 함께 재렌더링 됨 -> 자식컴포넌트가 동작이 오래걸리는 무거운 컴포넌트인 경우 부모 컴포넌트를 렌더링 할 때 마다 속도 저하가 발생할 수 있음! 이런 상황에 자식 컴포넌트를 memo로 감싸 놓으면 됨!

-> 재렌더링을 막기위한 훅

 

- 컴포넌트 로드시 1회만 실행하고 싶은 코드가 있는 경우 useMemo에 담아서 사용 할 수 있음

-> 예를 들어 반복문을 10억번 돌려야 하는 경우, 그 함수를 useMemo 안에 넣어두면 컴포넌트 로드시 1회만 실행됨

 

- useEffect처럼 dependency도 넣을 수 있기 때문에 특정 state, props가 변할 때만 실행 가능

-> 따라서 useMemo훅에 의존성 배열을 넣지 않는 경우 렌더링이 일어날 때마다 매번 함수가 실행되므로 사용 의미가 없어짐

 

- 의존성 배열에 빈 배열을 넣게 되면 컴포넌트 마운트 시에만 함수 실행

 

 

 

2. 사용 방법

- Memoized value를 리턴하는 훅

- 파라미터로 Memoized value를 생성하는 create 함수와 의존성 배열을 받음

- 의존성 배열에 들어있는 변수가 변한 경우만 새로 create 함수를 호출하여 결과값 반환

const memoizedValue = useMemo(
	() => {
    	// 연산량이 높은 작업을 수행하여 결과 반환
        return computeExpensiveValue(의존성 변수, 의존성 변수2);
    },
    [의존성 변수1, 의존성 변수2]
);