얕은 비교 vs 깊은 비교

얕은 비교 (React)

// Object.is로 비교
Object.is(prevState, nextState)

비교 방식

깊은 비교 (React가 안 함)

// 전체 객체 내용 비교
JSON.stringify(prevState) === 
JSON.stringify(nextState)

왜 얕은 비교를 사용할까요?

빠름

참조만 비교하므로 O(1)

예측 가능

명확한 기준으로 비교

명시적

불변성 패턴과 최적의 궁합

왜 === 대신 Object.is를 사용할까요?

NaN 비교

NaN === NaN → false Object.is(NaN, NaN) → true

+0 / -0 구분

+0 === -0 → true Object.is(+0, -0) → false

React의 선택

더 정확한 동등성 비교를 위해 Object.is 사용 useEffect, useMemo 등의 deps 비교

13