useMemo

라이프 사이클에서 값을 메모제이션 하는 방법

const memoizedValue = useMemo(computeCallbackValue, deps);

참조값도 같아야 하고, 값도 같아야하거든

https://codesandbox.io/s/modest-stonebraker-si2gv?file=/src/App.js:0-856

import React, { memo } from 'react';

const renderComment = comment => {
	return <div>title:{comment.title}</div>;
};

const FetchList = ({ data }) => {
	console.log(data);
	return <div>{data.map(comment => renderComment(comment))}</div>;
};

// export default FetchList;
export default memo(FetchList);

without memozation

Untitled

with memozation

Untitled

useCallback

useCallback : 라이프 사이클에서 함수를 메모제이션 하는 방법

const memoizedCallback= useCallback(fn, deps);

// 공식 문서
const memoizedCallback = useMemo(() => fn, deps)

https://codesandbox.io/s/cool-mountain-8372b?file=/src/App.js:0-322

주의 사항

추가로 볼만한 것, useMemo도 고려할 수 있지 않나요??

export default function App() {
  const initialCandies = 
		useMemo(["snickers", "skittles", "twix", "milky way"], 
		[]
	);
	const [candies, setCandies] = useState(initialCandies);
	// ..