Shallow comparison (얕은 비교)
- JS 객체의 동일성(reference equality)을 비교하는 법.
- 객체의 표면 수준에서 비교. (1deps; 중첩 개체는 더 들어가지 않음)
- 두 객체의 참조(메모리 주소)가 동일한지 확인.
- 데이터의 불변성 참고.
===
연산자를 사용한 얕은 비교 예시.
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
const arr3 = arr1;
console.log(arr1 === arr2);
console.log(arr1 === arr3);
Shallow comparison in React
- React에서 컴포넌트의 렌더링 성능을 최적화하기 위해 => 불필요한 렌더링 방지를 위해 얕은 비교함.
- Deep comparison(깊은 비교)에 비해 비용이 적고, 속도가 빠르고, 효율적이지만 복잡한 객체나 중첩된 객체를 처리하지 못함.
import React, { useState, useEffect } from 'react';
function ExampleComponent(props) {
const [data, setData] = useState(props.data);
useEffect(() => {
if (props.data !== data) {
setData(props.data);
}
}, [props.data]);
return <div>{data}</div>;
}
import React, { useState } from 'react';
function MyComponent(props) {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
const myData = { name: 'Alice', age: 25, address: { city: 'New York', state: 'NY' } };
return (
<div>
<p>You clicked the button {count} times</p>
{}
<button onClick={handleClick}>Click me!</button>
<p>
Name: {myData.name}, Age: {myData.age}
</p>
</div>
);
}