[TIL] memoization

동찌·2023년 2월 2일
0

내일배움단

목록 보기
48/56

memoization

리렌더링의 발생조건

  • 컴포넌트에서 state 변경
    • 그래서 불변성 중요
    • 모아서 한꺼번에 batch update
  • props가 변경
  • 부모 컴포넌트가 리렌더링 된 경우 자식 컴포넌트는 모두 리렌더링

최적화 - 렌더링을 얼마나 적게할 것인가, 불필요한 렌더링을 어떻게 줄일 것이냐
기억해야하는 이유 - 불필요한 렌더링을 방지 넣어놓고 꺼내쓰기

  • React.memo

    • 컴포넌트(component)를 캐싱
    • 부모 컴포넌트가 리렌더링 된 경우 자식 컴포넌트는 모두 리렌더링되는 문제를 돕는 도구
    • 리렌더링이 필요없는 자식 컴포넌트 export default React.memo(자식컴포넌트)
    • 자식 컴포넌트가 무거울 경우에 사용(매우 가벼운거는 캐싱하는게 더 비효율적)
  • useCallback

    • 인자로 들어오는 함수(function)를 캐싱
    • js에서 function은 객체의 한 종류임 -> 주소가 바뀌어서 리렌더링 됨
    • 함수의 내용이 바뀌는 것이 아니면 굳이 리렌더링 할 필요가 없음
    • 함수부분을 useCallback으로 감싸줌, 의존성 배열이 존재
  • useMemo

    • 값(value)을 캐싱
    • 객체, 배열, 함수
    • 많은 데이터를 가져온다던가 첫 렌더링 외에 리렌더링 될 필요가 없는 함수 같은거에 사용

0개의 댓글