"어떤 상태 관리 라이브러리가 더 좋을까?"
React에서 상태 관리는 필수적입니다. 오늘은 대표적인 상태 관리 라이브러리인 Jotai와 Zustand를 비교하며 각각의 장단점을 살펴보겠습니다.
Jotai는 atomic 패턴을 기반으로 상태를 독립적인 단위(atom)로 관리하는 라이브러리입니다.
import { atom, useAtom } from 'jotai';
// 상태 정의
const countAtom = atom(0);
function Counter() {
const [count, setCount] = useAtom(countAtom);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount((c) => c + 1)}>Increment</button>
</div>
);
}
function Display() {
const [count] = useAtom(countAtom);
return <p>현재 카운트: {count}</p>;
}
// App 컴포넌트
function App() {
return (
<>
<Counter />
<Display />
</>
);
}
Zustand는 중앙 집중형 스토어를 기반으로 모든 상태를 한 곳에서 관리하는 라이브러리입니다.
import { create } from 'zustand';
// 스토어 생성
const useStore = create((set) => ({
count: 0,
increment: () => set((state) => ({ count: state.count + 1 })),
}));
function Counter() {
const increment = useStore((state) => state.increment);
const count = useStore((state) => state.count);
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
);
}
function Display() {
const count = useStore((state) => state.count);
return <p>현재 카운트: {count}</p>;
}
// App 컴포넌트
function App() {
return (
<>
<Counter />
<Display />
</>
);
}
| Jotai | Zustand | |
|---|---|---|
| 상태 관리 방식 | 원자(atom) 단위 상태 관리 | 중앙 집중형 상태 관리 |
| 리렌더링 최적화 | 개별 atom을 구독하여 최소화 | 선택적 상태 구독 가능 |
| 의존성 관리 | atom 간 의존성 설정 가능 | 별도의 의존성 설정 필요 |
| React 외부 사용 | 불가능 | 가능 |
| Suspense 지원 | 기본적으로 지원 | 별도 설정 필요 |
💡 결국,
setter가 어디서 관리되는지가 핵심인것 같다.작은 상태를 여러 개 다뤄야 한다면 Jotai, 단순한 전역 상태를 효율적으로 관리하려면 Zustand가 더 적합해 보임.