인프런 커뮤니티 질문&답변

예승재님의 프로필 이미지
예승재

작성한 질문수

[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

10.2) useMemo와 연산 최적화

useMemo와 useEffect 차이

작성

·

582

1

useMemo 강의 잘 듣고 있습니다.
그런데, useMemo(() => {
//생략
}, [data.length]); 한 것과
 
useEffect(() => {
//생략
}, [data.length]); 한 것과 차이가 있을까요?
 
제가 생각했을때는 둘이 같이 작동할 것 같은데.. 어떻나요?

답변 2

1

  • useEffect는 side effects를 다루기 위해 사용되며, 특히 컴포넌트 라이프사이클 동안 특정 동작을 수행합니다.

     

  • useMemo는 값의 메모이제이션을 위해 사용되며, 특히 불필요한 계산을 피하기 위해 캐시된 값을 사용합니다.

  • useEffect는 특정 상태나 프롭이 변경될 때 실행되도록 의존성 배열을 사용합니다.

  • useMemo는 메모이제이션 함수의 의존성 배열을 통해 어떤 값이 변경될 때 메모이제이션 함수를 다시 실행할지를 결정합니다.

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

네 질문 주신 것 처럼 동일하게 동작합니다.

이는 useMemo의 설명을 위한 사례로 사용되었습니다.

  1. 이 강의에서 예제로 들어주신부분을 useEffect로 디펜던시는 todos 를 사용하면 똑같이 동작하는데 굳이 useMemo를 써야하는 이유가 있을까요 ?

  2. 단지 값을 반환한다 는 부분때문인가요?

  3. 불필요한 연산을 최적화 하는 리액트 훅이라고 하셨는데 todos 가 변경됐을때에만 특정 연산을 수행하기 때문에 불 필요한 연산을 최적화 한다고 표현하신 건가요?

  4. 메모이제이션 기법을 기반으로라고 하셨는데 todos 가 변경됨에 따라 같은 로직이 수행되고 있는데 어떤 부분에서 메모이제이션이라고 볼수있나요? 혹시 메모이제이션이 동일한 계산을 반복해야 할 때라면, todos가 변경되어서 동일한 계산이 반복되지 않아 메모이제이션이라고 볼 수 있는 건가요 ?

질문이 많아서 죄송합니다 ㅠㅠ

 

예승재님의 프로필 이미지
예승재

작성한 질문수

질문하기