반응형
카엔입니다
카엔
카엔입니다
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 프론트엔드 (74)
      • JavaScript (22)
      • CSS (2)
      • React (21)
      • Next.js (12)
      • 블록체인 (2)
    • 에러 모음 (11)
    • Git (5)
    • 백엔드 (1)
      • GraphQL (1)
    • AWS (2)
    • CS (1)
    • 코딩테스트 (1)
    • 개발 이야기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • useCallback
  • nextron
  • nextron ipc
  • 모바일 파란 박스
  • 웹상동작과정
  • 구글 스프레드시트 API
  • git 덮어쓰기
  • 자바스크립트 이진수 변환
  • ec2
  • ipc 통신
  • useMemo
  • unoptimized error
  • git
  • 자릿수 채우기
  • DOUBLE CHECK CONFIGURATION Please double check that you have setup a PAID OpenAI API Account. You can read more here: https://docs.agpt.co/setup/#getting-an-api-key
  • Cloudfront
  • ChatGPT
  • error
  • 이벤트루프
  • Next.js

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
카엔입니다

카엔

프론트엔드/React

useMemo와 useCallback의 차이는 뭘까

2023. 2. 19. 05:40

useMemo와 useCallback의 차이는 뭘까

둘다 연산 비용이 큰 작업을 최적화하려고 사용하는 리액트 훅입니다.

중요한 차이점은 반환 값과 사용 목적이라고 생각됩니다.

 

useMemo

메모이제이션된 값을 반환하는 함수

 

연산 비용이 큰 작업의 결과값을 메모이제이션하여 불필요한 재연산을 방지하는 리액트 훅입니다.

useMemo(() => {
	// 연산 비용이 큰 작업
	return 결과값;
}, [deps]);

의존성 배열로 넣어준, deps로 지정한 값이 변한다면 함수를 실행하고 그 함수의 반환 값을 반환합니다

useCallback

메모이제이션된 함수를 반환합니다

 

이벤트 핸들러와 같은 함수의 참조를 메모이제이션하여 불필요한 재렌더링을 방지합니다.

의존성 배열이 변경될때마다 새로운 함수 참조가 생성됩니다.

useCallback(() => {
	// ...함수
}, [deps]);

 

useCallback같은 경우에는 자식 컴포넌트로 핸들러를 전달할때 useCallback으로 감싸서 함수를 props로 내려주고 자식 컴포넌트에서는 React.memo로 감싸서 재렌더링을 방지하는 방법도 있습니다.

 

// 부모컴포넌트
const ParentComponent = () => {
	const handler = useCallback(() => {
		// ...    	
    }, [deps]);

 	// ...
	return <ChildrenComponent handler={handler} />;
};

// 자식컴포넌트
const ChildrenComponent = ({handler}) => {
	return <></>;
};

export default React.memo(ChildrenComponent);
저작자표시 (새창열림)

'프론트엔드 > React' 카테고리의 다른 글

사용자 음성을 텍스트로 변경하는 커스텀 훅  (0) 2023.06.14
리액트 생명주기란 뭘까  (0) 2023.02.18
리액트 내부 동작 원리  (0) 2023.02.17
useState는 비동기일까 동기일까? ( 배치 )  (0) 2023.02.06
React Query 공식문서 정리  (0) 2022.12.28
    '프론트엔드/React' 카테고리의 다른 글
    • 사용자 음성을 텍스트로 변경하는 커스텀 훅
    • 리액트 생명주기란 뭘까
    • 리액트 내부 동작 원리
    • useState는 비동기일까 동기일까? ( 배치 )
    카엔입니다
    카엔입니다
    https://www.kaen.site/

    티스토리툴바