useMemo

Beom·2023년 6월 15일
0

REACT

목록 보기
16/16

useMemo()

  const getDiaryAnaylysis = () => {
    const goodCount = data.filter((it) => it.emotion >= 3).length;
    const badCount = data.length - goodCount;
    const goodRatio = (goodCount / data.length) * 100;
    return { goodCount, badCount, goodRatio };
  });

  const { goodCount, badCount, goodRatio } = getDiaryAnaylysis();

일기에 좋은감정 + 나쁜감정 + 좋은 감정의 일기 비율에 대해서 보여주려고 한다

다만, 콘솔을 찍어서 확인해보니

일기를 수정할 때에도 호출이 되는 등 함수가 호출될 필요가 없는 상황에서도 불필요하게 호출이 되고 있었다

이럴 때 값을 기억하고 있는 useMemo 훅을 사용해보자 (연산결과 저장)


  const getDiaryAnaylysis = useMemo(() => {
    const goodCount = data.filter((it) => it.emotion >= 3).length;
    const badCount = data.length - goodCount;
    const goodRatio = (goodCount / data.length) * 100;
    return { goodCount, badCount, goodRatio };
  }, [data.length]);

  const { goodCount, badCount, goodRatio } = getDiaryAnaylysis;

useMemo로 감싼 후에는 더이상 함수가 아니기에 실행시키면 안됨

useMemo로 감싼 뒤에는 의존성 배열에 무엇이 바뀔때 호출이 될지를 적어두어야 함

0개의 댓글