항상 필요한 것은 아닙니다. 현대 프레임워크에는 유능한 내장 state 도구가 있으며, Redux/Zustand에 성급하게 손을 뻗으면 복잡성이 늘어납니다. 솔직한 답변은 이렇습니다: 내장 옵션이 고통스러워질 때만 라이브러리를 추가하세요.
내장 도구로 시작하기
jsx
[x, setX] = ();
value = ();
memo = ( (), [x]);
local state + Context + (원격 데이터를 위한) React Query면 대다수 앱을 감당합니다. 많은 프로덕션 앱은 글로벌 state 라이브러리가 전혀 필요 없습니다.
✓ 멀리 떨어진 많은 컴포넌트가 공유하는 GLOBAL state가 많음
✓ Context가 잘 처리하지 못하는 복잡한 state 상호작용 / 잦은 갱신
(Context는 변경 시 모든 consumer를 리렌더링함)
✓ devtools, 타임 트래블 디버깅, 또는 엄격한 갱신 추적성이 필요함
✓ 많은 컴포넌트가 동일한 공유 state를 모두 읽고 쓰기 함
✓ 큰 팀을 위해 예측 가능하고 중앙화된 갱신 로직이 중요함
라이브러리의 비용: 보일러플레이트, 학습 곡선, 더 많은 간접화, 번들 크기.
소/중 규모 앱에서는 그 비용이 이점을 능가하는 경우가 많습니다.
서버/원격 데이터 → React Query / SWR(글로벌 store가 아님)
몇 개의 글로벌 값 → Context, 또는 작은 store(Zustand/Jotai)
크고 복잡한 공유 state → Redux Toolkit, 또는 보일러플레이트가 적은 Zustand
폼 state → 폼 라이브러리(React Hook Form), 글로벌 state 아님
"Redux가 필요하다"의 상당 부분은 사실 React Query로 더 잘 풀리는 server-state 문제이거나, Context/Zustand로 풀리는 몇 개의 값 문제입니다.
state 라이브러리가 언제 정당한지 아는 것은 흔한 실수인 과도한 엔지니어링을 막아줍니다. useState와 Context만 필요한 앱에 Redux를 추가하는 것 말입니다.
성숙한 접근은 단순하게 시작하여, 구체적인 통점(깊은 공유, 복잡한 갱신, 서버 캐싱)을 식별하고, 그 통점에 맞는 올바른 도구(흔히 가벼운 store나 server-state 라이브러리이지 무거운 글로벌 것이 아님)에 손을 뻗는 것입니다.
적합한 최소 해결책을 고르면 앱이 더 단순하고, 더 빨리 만들 수 있으며, 유지보수하기 쉬워집니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기