일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- localstorage
- es6
- 프로그래머스
- axios
- 타입스크립트
- array
- react localStorage
- JS
- til
- 컴포넌트
- state
- v9
- 비트 연산자
- 프리온보딩
- Redux
- TypeScript
- 원티드
- 프론트엔드
- react
- 리액트
- Reducer
- firebase
- JavaScript
- Frontend
- CORS
- Component
- 자바스크립트
- 알고리즘
- 파이어베이스
- 브라우저
Archives
- Today
- Total
도리쓰에러쓰
[React] 얕은 비교와 깊은 비교의 차이 본문
1. 얕은 비교
기본 타입 데이터의 경우 값이 동일한지만 비교하고, 객체의 경우 참조만 비교한다.
그래서 객체를 state로 사용하게 될 경우 값이 같더라도 참조값이 다르기 때문에 재렌더링이 발생한다.
const obj1 = { a: 1, b: 2 };
const obj2 = { a: 1, b: 2 };
console.log(obj1 === obj2); // false
2. 깊은 비교
얕은 비교와 달리 깊은 비교는 객체의 경우에도 값으로 비교한다. 깊은 비교 방법은 아래와 같다.
1️⃣ Object depth가 깊지 않은 경우 : JSON.stringify() 사용
2️⃣ Object depth가 깊은 경우 : lodash 라이브러리의 isEqual() 사용
const obj1 = { a: 1, b: 2 };
const obj2 = { a: 1, b: 2 };
console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // true
'React > React' 카테고리의 다른 글
[React] 상태관리 라이브러리 어떤걸 써야할까? (0) | 2022.08.18 |
---|---|
[React] 커스텀 Hook이란? (0) | 2022.07.16 |
[React] 상태 업데이트 로직을 컴포넌트와 분리할 수 있는 useReducer() (0) | 2022.07.16 |
[React] 리액트 렌더링 성능 최적화 (Performance Optimize) (0) | 2022.07.15 |
[React] 라이프사이클(Lifecycle)에 대해 (0) | 2022.07.13 |
Comments