import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>현재 숫자: {count}</p>
<button onClick={() => setCount(count + 1)}>+1</button>
</div>
);
}
count: 현재 숫자 상태를 저장하는 state 변수setCount: count 상태를 변경하는 함수count라는 상태가 바뀌면 return() 안의 JSX 전체가 다시 실행function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>{count}</p> // 이 부분만 바뀌는 것 같지만...
<button onClick={() => setCount(count + 1)}>+1</button>
</div>
);
}
| 개념 | 설명 |
|---|---|
useState(initialValue) | 컴포넌트에 상태(state)를 추가하고, 초기값 설정 |
| 상태값(state) | const [value, setValue] 구조로 현재 값과 변경 함수 제공 |
| 상태 변경 | setValue(newValue) 호출 시 컴포넌트가 다시 렌더링됨 |
| 배열 상태 업데이트 | 기존 배열을 복사하고 일부만 수정한 새 배열을 만들어 전달 |
불변성 유지
상태를 직접 수정하지 말고 새로운 값을 만들어서 setState 해야 함
// ❌ 잘못된 예
links[0].text = "수정됨";
setLinks(links); // 이건 React가 변경을 감지 못해요
// ✅ 올바른 예
const newLinks = [...links];
newLinks[0] = { ...newLinks[0], text: "수정됨" };
setLinks(newLinks);
컴포넌트 분리해서 각자 상태 관리
각 요소에 고유한 상태가 필요할 땐, 컴포넌트로 분리해서 관리하는 게 좋음