(null);
const isModalOpen = Boolean(title || content);
+ // 폼 제출 시도 여부를 추적하는 플래그
+ const isSubmittedRef = useRef(false);
+
useClosePopup(modalRef, closeModal);
useLockBackgroundScroll(isModalOpen);
- if (!isModalOpen) return null;
-
+ // button 클릭 시 실행되는 함수 (form 존재 여부에 따른 분기 처리 )
const handleRequest = () => {
- button?.onRequest?.(requestBody);
- closeModal();
+ isSubmittedRef.current = true;
+
+ // 기존 모달 흐름
+ if (!formId) {
+ if (isSubmittedRef.current) {
+ button?.onRequest?.(requestBody);
+ closeModal();
+ isSubmittedRef.current = false;
+ console.log('handleRequest 실행');
+ return;
+ }
+ }
+
+ // formId 존재 (브라우저 submit 트리거)
+ const form = document.getElementById(
+ formId as string
+ ) as HTMLFormElement | null;
+ if (form) {
+ form.requestSubmit(); // 폼 제출만 담당
+ }
+ isSubmittedRef.current = false;
};
+ if (!isModalOpen) return null;
+
return (
)}
- {content &&
{content}
}
+ {content && (
+
+ {typeof content === 'function' ? content() : content}
+
+ )}
@@ -99,6 +127,7 @@ export default function Modal() {
)}