shadcn Dialog + useForm — 모달 닫힐 때 폼 상태 미초기화 함정¶
증상¶
Dialog 닫았다가 재열면 이전 입력값·에러·로컬 state가 잔류.
근본 원인¶
Radix Dialog는 open=false에서도 닫기 애니메이션 동안 DOM 유지 → useForm 상태 언마운트 안 됨.
해결¶
const { reset } = form;
useEffect(() => {
if (!open) {
reset();
setSelectedEmp(null); // rhf 외부 state도 함께
}
}, [open, reset]);
deps에 form 전체 대신 reset 구조분해 (무한루프 방지).
체크리스트¶
- Dialog + useForm → 반드시
useEffect([open, reset])초기화 - rhf 외부 useState도 같은 블록에서 초기화
- 읽기 전용 Dialog에는 불필요
관련¶
- 2026-04-10-useform-reset-useeffect-deps-form객체-무한루프 — deps 잘못 설정 시 무한루프
적용 커밋¶
204f466 (AssetAssignModal, AssetRecallModal)