프로그래밍/react

1-10) [리액트 기초] useMemo함수의 불필요한 재호출 방지

플로어코딩 2024. 2. 5. 12:21

리액트의 최적화 기능 중의 하나의 useMemo에 대해서 알아보자.

 

리액트의 장점은 실시간 렌더링이라고도 할 수 있지만, 불필요한 렌더링을 하게되는 경우 

많은 리소스에 연산을 하게되어 성능 저하의 원인이 된다.

 

불필요한 리렌더링을 방지하기위하 목적으로 useMemo 를 사용한다.

 

 

 

const value = useMemo(callback, arrays?];

 

호출된 useMemo 는 의존성배열인 arrays의 값이 변할 때만 리렌더링되며, 값이 변하지 않는 한 재호출되지 않는다.

 

 

아래 사용 예시를 보자

 

const analyzeTodo = useMemo(() => {
    console.log('todo가 변경될 때 마다 analyzeTodo() 함수를 호출합니다.');
    const totalCount = todo.length;
    const doneCount = todo.filter((it) => it.isDone).length;
    const notDoneCount = totalCount - doneCount;
    return { totalCount, doneCount, notDoneCount };

  }, [todo]);

  const { totalCount, doneCount, notDoneCount } = analyzeTodo;

 

 

useMemo를 사용하기전에는 입력 이벤트를 받을 때마다 리렌더링이 되었으나 useMemo로 todo 의 값이 변경될 때만 리렌더링 되도록 수정한 예시이다.