1. 먼저 package.json에 zustand가 있는지 확인합니다. zustand가 없으면 npm install zustand 하시면 됩니다!

Untitled

  1. zustand를 사용하기 위해 store.ts를 생성합니다. (store.ts는 깃허브 develop-front 브랜치에 푸시돼있습니다!)

    import create from "zustand";
    
    // 각 모달의 상태를 관리하기 위한 타입
    interface ModalState {
      modals: {
        [key: string]: { isOpen: boolean };
      };
      openModal: (id: string) => void;
      closeModal: (id: string) => void;
      isAnyModalOpen: () => boolean;
    }
    
    // Zustand 스토어 생성
    export const ModalStore = create<ModalState>((set) => ({
      modals: {},
    
      openModal: (id: string) => {
        set((state) => ({
          modals: {
            ...state.modals,
            [id]: { isOpen: true },
          },
        }));
      },
    
      closeModal: (id: string) => {
        set((state) => ({
          modals: {
            ...state.modals,
            [id]: { isOpen: false },
          },
        }));
      },
    
      isAnyModalOpen: (): boolean => {
        const { modals } = ModalStore.getState();
        return Object.values(modals).some((modal) => modal.isOpen);
      },
    }));
    
    
  2. 위 작성한 store.ts를 이용해 모달의 상태를 관리합니다.

    import { ModalStore } from '../../store/store';
    
    const {modals, openModal, closeModal} = ModalStore();
    
const handleModalClose = () => {
	closeModal("customExerciseModal");
}

return(
	<div>
		<button onClick={() => openModal("customExerciseModal")}>직접 입력하기</button>
  </button>
	<CustomExerciseModal
                isOpen={modals.customExerciseModal?.isOpen}
                onClose={handleModalClose}
            />
)