상태가 단순할 땐 useState를 쓰는 것이 편하지만, 복잡해질 경우 useReducer가 더 깔끔하고 명확한 코드를 만들어 줍니다. 이 글에서는 간단한 카운터 예제를 통해 useState와 useReducer의 차이를 비교해보겠습니다.
import { useState } from "react";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>{count}</p>
<button onClick={() => setCount(count + 1)}>+1</button>
</div>
);
}
export default Counter;
import { useReducer } from "react";
function reducer(state, action) {
switch (action) {
case "INCREMENT":
return state + 1;
default:
return state;
}
}
function Counter() {
const [count, dispatch] = useReducer(reducer, 0);
return (
<div>
<p>{count}</p>
<button onClick={() => dispatch("INCREMENT")}>+1</button>
</div>
);
}
export default Counter;
상황적절한 훅
상태가 단순하고 하나만 있음 | useState |
상태가 여러 개거나, 복잡한 조건 분기 필요 | useReducer ✅ |
Redux 스타일처럼 액션 기반 상태 관리 | useReducer ✅ |
React - useCallback을 활용한 함수 최적화 전략 (0) | 2025.06.07 |
---|---|
React - useMemo를 사용한 코드 vs 사용하지 않은 코드 비교 (0) | 2025.06.07 |
React - props 전달 방식의 차이: `{...todo}` vs `todo={todo}` (0) | 2025.06.05 |
React - useEffect를 이용한 컴포넌트 라이프사이클 제어 정리 (1) | 2025.06.05 |
♻️ 리액트 컴포넌트 생명 주기(Lifecycle) 핵심 정리 (0) | 2025.06.03 |