sequenceDiagram
participant Component as 컴포넌트
participant useModal as useModal 훅
participant ModalProvider as ModalProvider 컨텍스트
participant CurrentModal as 모달 컴포넌트
Component->>useModal: openModal(CARD_MODAL, {props})
useModal->>ModalProvider: 모달 타입과 props 설정
ModalProvider->>ModalProvider: 상태 업데이트 (modalType, modalProps)
ModalProvider->>CurrentModal: 모달 렌더링 (isOpen=true)
CurrentModal->>CurrentModal: 사용자 상호작용
CurrentModal->>useModal: closeModal()
useModal->>ModalProvider: 모달 상태 초기화
ModalProvider->>ModalProvider: modalType=null, modalProps={} 설정
ModalProvider->>CurrentModal: isOpen=false로 언마운트
context API를 통해 전역으로 효율적으로 모달을 열고 닫기
import { MODAL_TYPES, useModal } from '@/providers/ModalProvider'
function MyComponent() {
const { openModal } = useModal()
const handleOpen = () => {
openModal(MODAL_TYPES.SELL_PHOHO_CARD, {
// 여기는 해당 모달에 프롭을 내릴수있게 해줍니다.
type: "sell",
cardId: 123
});
}