객체 State 업데이트하기
객체의 변경(mutation)
const [position, setPosition] = useState<{x: number, y: number}>({x: 0, y: 0});
//객체 자체의 내용 변경
position.x = 5;State를 읽기 전용인 것처럼 다루기
export default function MovingDot() {
const [position, setPosition] = useState<{x: number, y: num}>({
x: 0,
y: 0
});
return (
<div
onPointerMove={(e: React.PointerEvent<HTMLDivElement>) => {
position.x = e.clientX;
position.y = e.clientY;
}}
style={{
position: 'relative',
width: '100vw',
height: '100vh',
}}>
<div style={{
position: 'absolute',
backgroundColor: 'red',
borderRadius: '50%',
transform: `translate(${position.x}px, ${position.y}px)`,
left: -10,
top: -10,
width: 20,
height: 20,
}} />
</div>
)
}스프레드 문법으로 객체 복사하기
중첩된 객체에서의 스프레드 문법
Immer로 평탄화하기
왜 React에서 state 변경은 권장되지 않나요?
깊은 복사를 하기 위한 문법
1. structuredClone (최신 브라우저 지원)
structuredClone (최신 브라우저 지원)2. lodash의 cloneDeep
lodash의 cloneDeep3. JSON 문자열화 방식
4. 타사 라이브러리 활용
rfdc 예제
rfdc 예제Last updated