Alraffe
이것 저것 개발.
Alraffe
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • Front-end
      • CSS
      • React
      • Next.js
    • Back-end
    • Book
      • Effective Typescript

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JS
  • frontend
  • 이펙티브타입스크립트
  • 리액트
  • JASON.parse()
  • 노션 이력서
  • git
  • 오랠리
  • 깃헙 배포 빈 화면
  • react
  • JASON.stringify
  • TypeScript
  • object 값을 찍고 싶을 떄
  • 타입스크립트 책
  • 타입스크립트 책 추천
  • 프론트엔드
  • 프론트엔드 책 추천
  • 주니어 개발자 이력서
  • 타입스크립트 추천
  • 프론트엔드회고
  • JavaScript
  • vite 배포 에러
  • evnentBubbling
  • Til
  • 자바스크립트
  • next14
  • 타입스크립트
  • 배포 에러
  • vite 깃헙 배포
  • 개발자 커피챗

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Alraffe

이것 저것 개발.

Front-end/React

[React] React Hooks - useMemo, useCallback, useRef

2023. 1. 8. 23:22

1. useMemo

의존성 변수가 변하지 않은 경우 기존의 값을 그대로 반환함으로서 렌더링 속도를 빠르게 할 수 있는 hook.

 

useMemo함수는 렌더링이 진행되는 과정에서 실행되기 때문에 유의해서 사용해야한다. 예를 들어 서버에서 데이터를 받아오거나 DOM 객체에 접근해야하는 경우는 useEffect를 사용해야 한다.

의존성 배열을 넣지 않을 경우 렌더링 때마다 항상 실행된다. 혹은 의존성 배열을 빈 배열로 남겨둔 경우 useEffect와 같이 마운트 시에만 호출된다.

 

const memoizedValue = useMemo(
	() => {
    	return updatedValue(deps1,deps2);
    },[deps1, deps2]
);

 

2. useCallback

useMemo와 달리 값이 아닌 함수를 반환하는 hook. 의존성 배열에 있는 변수들이 바뀔 때만 함수를 새로 정의해서, 매번 렌더링될 때마다 함수를 새로 정의하는 것을 방지한다.

 

의존성 배열에 따라 함수나 값을 반환한다는 점에서 useMemo와 같다.

 

const memoizedCallback = useCallback(
	() => {
    	updateSomething(deps1, deps2);
    },[deps1, deps2]
);

 

3. useRef

한 번 정의해두면 렌더링이 되어도 매번 같은 객체 반환.

useRef에 담겨있는 객체가 바뀌어도 리렌더링이 이뤄지지 않는다. 그렇기 때문에 useRef에 담겨있는 객체가 바뀌는 것을 인지하고 다른 액션을 취하고 싶을 경우에는 useCallback를 사용해야 한다.

function behaveSomething() {
	const inputRef = useRef(null);
    
    const onClickButton = () => {
    	inputRef.current.focus();
    }
    
    return (
    	<>
        	<input ref={inputRef} type='number' />
            <button onClick={onClickButton}>
            Click!
            </button>
        </>
    )
}
저작자표시 비영리 변경금지

'Front-end > React' 카테고리의 다른 글

vite+react 깃헙 배포 방법  (0) 2023.10.05
DOM onclick vs React onClick  (0) 2023.01.16
CRA에서 craco이용해 @components 절대경로 설정  (0) 2023.01.03
[React] React Hooks - useState, useEffect  (0) 2022.04.26
    'Front-end/React' 카테고리의 다른 글
    • vite+react 깃헙 배포 방법
    • DOM onclick vs React onClick
    • CRA에서 craco이용해 @components 절대경로 설정
    • [React] React Hooks - useState, useEffect
    Alraffe
    Alraffe

    티스토리툴바