
Introducción
Cuando necesitas escuchar una tecla de acceso rápido, normalmente usarías el eventoonKeyDown.
En twenty-front, sin embargo, podrías tener conflictos entre los mismos atajos de teclado utilizados en diferentes componentes, montados al mismo tiempo.
Por ejemplo, si tienes una página que escucha la tecla Enter y un modal que escucha la tecla Enter, con un componente Select dentro de ese modal que también escucha la tecla Enter, podrías tener un conflicto cuando todos están montados al mismo tiempo.
El gancho useScopedHotkeys
Para manejar este problema, tenemos un gancho personalizado que hace posible escuchar atajos de teclado sin ningún conflicto.
Lo colocas en un componente, y escuchará los atajos de teclado solo cuando el componente está montado Y cuando el ámbito del atajo de teclado especificado está activo.
¿Cómo escuchar atajos de teclado en la práctica?
Hay dos pasos involucrados en configurar la escucha de atajos de teclado:- Establece el ámbito del atajo de teclado que escuchará los atajos de teclado
- Usa el gancho
useScopedHotkeyspara escuchar atajos de teclado
Casos de uso para atajos de teclado
En general, tendrás dos casos de uso que requieren atajos de teclado:- En una página o un componente montado en una página
- En un componente tipo modal que toma el enfoque debido a la acción del usuario
Escuchando atajos de teclado en una página
Ejemplo:Escuchando atajos de teclado en un componente tipo modal
Para este ejemplo utilizaremos un componente modal que escucha la tecla Escape para indicar a su padre que lo cierre. Aquí la interacción del usuario está cambiando el ámbito.¿Qué es un ámbito de atajo de teclado?
Un ámbito de atajo de teclado es una cadena que representa un contexto en el que los atajos de teclado están activos. Por lo general, se codifica como un enum. Cuando cambias el ámbito del atajo de teclado, se habilitarán los atajos que están escuchando este ámbito y se deshabilitarán los atajos que escuchan otros ámbitos. Solo puedes establecer un ámbito a la vez. Como ejemplo, los ámbitos de atajos de teclado para cada página se definen en el enumPageHotkeyScope: