개발자로서 새로운 기술이나 패턴을 접할 때마다 "이걸 실제로 써볼 수 있을까?"라는 생각을 하게 됩니다. useReducer도 마찬가지였습니다. 부스트캠프 마스터 클래스에서 처음 접했을 때는 단순히 'Redux의 축소판' 정도로만 생각했고, useState가 더 직관적이고 사용하기 쉬워 보였기 때문에 실제 프로젝트에 적용할 생각은 하지 않았습니다.
하지만 실시간 퀴즈 애플리케이션을 개발하면서, 다음과 같은 상황들이 계속해서 발생했습니다:
이러한 복잡성을 다루면서, useReducer의 필요성을 절실히 느끼게 되었고, 이는 리팩토링의 방향성이 되었습니다.
useReducer는 복잡한 상태 관리를 위한 React의 내장 Hook입니다. 하지만 이를 더 쉽게 이해하기 위해, 우리 주변의 친숙한 시스템과 비교해 보겠습니다.
graph LR
A[현재 상태<br/>주문 현황판] --> B[상태 변경 요청<br/>주문]
B --> C[변경 규칙<br/>주방장]
C --> D[새로운 상태<br/>업데이트된 현황판]
D --> A
학교 식당의 주문 시스템을 예로 들면:
두 상태 관리 방식의 차이를 시각적으로 비교해보겠습니다: