자바스크립트의 6가지 타입 중 객체를 제외한 원시 값들은 참조 값이 아닌 값 자체를 새로 할당한다. 따라서 값이 변경되면 서로 다른 값을 가지게 된다.
let value = 1; let value2 = value; value2 = 2; value === value2 // false
반면 참조 타입인 객체는 하나의 값이 변경되면 다란 하나의 값도 동일하게 변경된다. 또한, 참조 타입은 동일 참조 값이 아니라면 즉, 같은 메모리에 할당되지 않았따면 ===에서 false를 반환하다.
let obj = {number: 1}; let obj2 = obj; obj === obj2; //같은 참조값이므로 true 반환 let arr = ["hello"] let arr2 = ["hello"] arr === arr2 // 다른 참조값이므로 false 반환
- state 변경이 있을 때
- 부모 컴포넌트가 렌더링 될 때
- 새로운 props이 들어올 때
- shouldComponentUpdate에서 true가 반환될 때
- forceUpdate가 실행될 때
const Example = () => {
const memorizedCallback = useCallback(() => doSomething(a,b), [a,b]);
return <Lower fns={memorizedCallback} />
}
const memoizedComponent = React.memo((props) => (prev,next) => ...);
// nextProps가 prevProps와 동일한 값을 가지면 true 반환
const Example({x,y}) => {
const result = use.Memo(() => compute(x,y), [x,y]);
return <div>{result}</div>
}