React

[React] useMemo useCallback

라임오렌지원 2022. 9. 15. 22:26

useMemo 를 사용하면 함수 컴포넌트 내부에서 발생하는 연산 최적화 가능

 

렌더링하는 과정에서 특정 값이 바뀌었을 때만 연산 실행하고, 원하는 값이 바뀌지 않았다면 이전에 연산했던 결과를 다시 사용하는 방식.

 

 

useCallback 은 useMemo 와 비슷한 함수.

주로 렌더링 성능을 최적화해야 하는 상황에서 사용. 이 Hook을 사용하면 만들어 놨던 함수를 재사용 가능하다.

 

useCallback 의 첫 번째 파라미터에는 생성하고 싶은 함수를 넣고, 두 번째 파라미터에는 배열을 넣으면 된다.

이 배열에는 어떤 값이 바뀌었을 때 함수를 새로 생성해야 하는지 명시해야 한다.

함수 내부에서 상태 값에 의존해야 할 때는 그 값을 반드시 두 번째 파라미터 안에 포함시켜 주어야 한다.

 

 

 

 

추가 내용 [2022.11.08]

 

useMemo를 이용하여 함수를 한 번만 실행하여 결과 값을 유지하여 불러다가 쓰고 싶었다.

활용법을 제대로 이해한 것 같지 않아, 다시 찾아보았다.

 

 

useMemo를 사용하기 전에, 메모이제이션(memoization)이란?

기존에 수행한 연산의 결과값을 어딘가에 저장해두고 동일한 입력이 들어오면 재활용하는 프로그래밍 기법을 말한다.

(지금 내가 원하는 기법.)

memoization을 적절히 적용하면 중복 연산을 피할 수 있어, 메모리를 조금 더 쓰더라도 애플리케이션의 성능을 최적화할 수 있다.

 

 

useMemo

메모이제이션된 '값'을 반환한다.
useMemo(() => fn, deps)

 

useMemo 는 deps가 변한다면, () => fn 이라는 함수를 실행하고,

그 함수의 변환 값을 반환한다.

 

deps : dependency ( useMemo가 deps라는 것에 '의존' 한다는 뜻. )

 

useMemo(() => {console.log(ex)}, [ex])

 

 

에서 deps는 [ex]이다.

ex가 변할 때에만 () => {console.log(ex)} 이 실행된다.

ex 라는 값은 변하지 않으면 useMemo는 아무런 변화가 없다.

 

 

 

 


참고 : 리액트를 다루는 기술 개정판 (김민준 지음)

 

https://basemenks.tistory.com/238

 

useCallback 과 useMemo 의 차이

먼저 메모이제이션(memoization) 이란? useMemo 함수에 대해서 알아보기 전에 알고리즘 시간에 자주 나오는 메모이제이션(memoization) 개념에 대해서 잠깐 짚는다. memoization이란 기존에 수행한 연산의 결

basemenks.tistory.com

 

728x90

'React' 카테고리의 다른 글

dangerouslySetInnerHTML  (0) 2022.10.06
React 화살표 함수  (2) 2022.09.21
React.lazy & Suspense  (0) 2022.09.19
React 외부 js불러와서 사용하기  (0) 2022.09.08
React 구조 ? 흐름 ? 리액트가 처음이라면 ?  (0) 2022.08.31