로고로고

싱글톤 패턴 (feat.Zustand)

2025년 9월 23일

싱글톤 패턴

싱글톤 패턴은 애플리케이션 전체에서 하나의 인스턴스만 생성해서 공유하는 디자인 패턴

즉, 하나의 상태 저장소(store)를 만들고 그걸 모든 컴포넌트가 공유해서 쓰는 구조

Zustand는 이 개념을 자연스럽게 지원한다. Zustand로 만든 store는 프로젝트 내에서 단 한 번만 생성되고, 그 store를 가져와 사용하는 모든 컴포넌트는 동일한 전역 상태를 바라보게 됨.

 

 

예시 (로그인 상태 관리)

import { create } from "zustand";

interface AuthState {
  user: { id: string; name: string } | null;
  login: (user: { id: string; name: string }) => void;
  logout: () => void;
}

export const useAuthStore = create<AuthState>((set) => ({
  user: null,
  login: (user) => set({ user }),
  logout: () => set({ user: null }),
}));

 

 

핵심