요약

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. 포커스 의존성

문제점 2. UX 경험 저하


접근 과정