얕은 비교 (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 비교