library

Zustand

vamosdev12 2025. 3. 6. 11:09

 

1. Zustand 란?

 

- 상태 관리 라이브러리, Redux보다 간단함.

 

 

2. 주요 메서드

 

1) create : Zustant의 기본 스토어 생성

 

 - create(set => {...})를 사용하면 상태(store)*를 만들 수 있음.

 - set을 이용해 상태 업데이트 가능!

 - Redux의 createStore(reducer) 또는 configureStore({ reducer })와 같음

import { create } from "zustand";

const useStore = create((set) => ({
  count: 0,
  increase: () => set((state) => ({ count: state.count + 1 })),
}));

function Counter() {
  const { count, increase } = useStore();

  return (
    <div>
      <p>{count}</p>
      <button onClick={increase}>+1</button>
    </div>
  );
}

 

 

2) persist : Zustand에서 상태를 저장하는 미들웨어

 

 - Zustand 상태를 로컬 스토리지(LocalStorage)나 세션 스토리지(SessionStorage)에 저장 가능

 - 브라우저 새로고침 후에도 상태 유지됨!

 - Redux의 경우, redux-persist라이브러리를 사용해야 가능함.

import { create } from "zustand";
import { persist } from "zustand/middleware";

const useLoginStore = create(
  persist(
    (set) => ({
      isLoggedIn: false,
      login: () => set({ isLoggedIn: true }),
      logout: () => set({ isLoggedIn: false }),
    }),
    { name: "login-storage" } // 로컬스토리지에 저장되는 key 이름
  )
);

 

 

3. Redux와 대응 함수 비교

기능 Zustand (create) Redux(configureStore)
상태 생성 create((set) => ({ state })) configureStore({ reducer })
상태 변경 set((state) => ({ newValue })) dispatch({ type, payload })
상태 가져오기 get().state useSelector(state => state.value)
비동기 처리 async set(...) 가능 redux-thunk 또는 redux-saga 필요
로컬 저장 persist() 한 줄로 설정 redux-persist 설정 필요
코드 복잡도 간단함 비교적 복잡함
사용 사례 소규모 프로젝트, 빠른 개발 대규모 프로젝트, 복잡한 상태 관리

 

 

 

 

* store : 전역 상태를 저장하고 관리하는 저장소