Skip to main content

useEscapeKey

Location: src/hooks/useEscapeKey.js

Overview

A utility hook that listens for the Escape key being pressed and invokes a callback. Commonly used alongside useClickOutside to close modals, dialogs, and popovers. Attaches a keydown listener to the document.

Signature

function useEscapeKey(
onEscape: (event: KeyboardEvent) => void,
enabled?: boolean
): void

Parameters

ParameterTypeRequiredDescription
onEscape(event: KeyboardEvent) => voidYesCallback invoked when the Escape key is pressed. Receives the original keyboard event.
enabledbooleanNoWhether the listener is active. Defaults to true. Set to false to temporarily disable.

Return Value

This hook does not return anything.

Usage

function Modal({ isOpen, onClose }) {
useEscapeKey(onClose, isOpen);

if (!isOpen) return null;

return (
<div className="modal-overlay">
<div className="modal">
<p>Press Escape to close</p>
</div>
</div>
);
}

Combined with useClickOutside

function Dialog({ onClose }) {
const ref = useClickOutside(onClose);
useEscapeKey(onClose);

return (
<div ref={ref} className="dialog">
<p>Click outside or press Escape to close</p>
</div>
);
}

Last updated: 2026-02-07