ESC 키 제어 방식을
useRef + focus 체크
에서 window.addEventListener('keydown')
로 변경했습니다.
처음에는 useRef
를 통해 모달 루트에 포커스를 주고,
onKeyDown
이벤트에서 ESC를 감지하는 방식으로 구현했습니다.
useEffect(() => {
if (isOpen) {
ref.current?.focus();
}
}, [isOpen]);
return (
<div ref={ref} tabIndex={-1} onKeyDown={handleKeyDown}>
...
</div>
);
하지만 이 방식에는 몇 가지 문제가 있었습니다.
문제점 1. 포커스 의존성
div
에 포커스가 잡혀 있어야만 동작합니다.문제점 2. UX 경험 저하