고차컴포넌트(HOC)?
React.memo는 React에서 제공하는 고차컴포넌트로
보통 컴포넌트를 인자로 받아서, 고차컴포넌트(React.memo)의 prop check(prop이 변화했는지)를 통해 최적화된 컴포넌트를 반환하게 함
일반적인 props 전달 과정을 확인하자 !
const Student = ({name, age, address}) => {
return (
<div>
<h1> {name} </h1>
<span> {age} </span>
<span> {address} </span>
</div>
);
};
const School = (props) -> {
return (
<Student
name = {'홍길동'}
age = {20}
address = {'우리집'}
/>
);
};
🔔 그래서, 렌더링 횟수를 제한하자 ! (최적화 하자 !)
= 필요할 때만 렌더되도록
(다시 말해서, state, context 변화시 재렌더링 됨)
리액트 초기렌더를 제외하고, state 혹은 부모컴포넌트가 렌더 되더라도 리 렌더링 되지 않음 !
함수가 렌더될 때 변수도 초기화 됨
새로운 객체가 만들어짐 ( 각각 다른 메모리 주소에 저장됨)
따라서 전달하는 객체의 내용은 변하지 않지만, 전달되는 변수안에 메모리 주소가 변하기 때문에 prop check에서 변화로 감지 ! 그래서 렌더됨그래서, useMemo를 함께 사용 !
그래서, React.memo를 써도 계속 변화로 판단하기 때문에 렌더링 됨 !
최적화......끄응.....!
적재적소에 낭비없이 사용하는게 최고이시다 !
아무튼 ! 컴포넌트 결과값을 메모이제이션 한닷 !
참고 !
이미지(코드) https://youtu.be/oqUgcxwrnSY
https://ko.reactjs.org/docs/react-api.html#reactmemo
https://ssdragon.tistory.com/106
https://cocoon1787.tistory.com/799
https://usage.tistory.com/142
https://velog.io/@cjhlsb/React-React.memo로-컴포넌트-리렌더링-방지하기
https://velog.io/@jewoo/React-memo-사용하기