
Introduction
Lorsque vous devez écouter une touche de raccourci, vous utilisez normalement l’événementonKeyDown.
Cependant, dans twenty-front, vous pourriez avoir des conflits entre les mêmes raccourcis utilisés dans différents composants, montés en même temps.
Par exemple, si vous avez une page qui écoute la touche Entrée, et une fenêtre modale qui écoute aussi la touche Entrée, avec un composant Select à l’intérieur de cette fenêtre qui écoute également la touche Entrée, vous risquez d’avoir un conflit lorsque tous sont montés en même temps.
Le hook useScopedHotkeys
Pour résoudre ce problème, nous avons un hook personnalisé qui permet d’écouter les raccourcis sans aucun conflit.
Vous l’insérez dans un composant et il écoutera les raccourcis uniquement lorsque le composant est monté ET lorsque le périmètre du raccourci spécifié est actif.
Comment écouter les raccourcis en pratique ?
Deux étapes sont nécessaires pour configurer l’écoute des raccourcis :- Définir le périmètre du raccourci qui écoutera les raccourcis
- Utiliser le hook
useScopedHotkeyspour écouter les raccourcis
Cas d’utilisation des raccourcis
En général, vous aurez deux cas d’utilisation nécessitant des raccourcis :- Dans une page ou un composant monté dans une page
- Dans un composant de type modal qui prend le focus à la suite d’une action utilisateur
Écouter les raccourcis dans une page
Exemple :Écouter les raccourcis dans un composant de type modal
Pour cet exemple, nous allons utiliser un composant modal qui écoute la touche Échap pour informer son parent de le fermer. Ici, l’interaction utilisateur change le périmètre.Qu’est-ce qu’un périmètre de raccourci ?
Un périmètre de raccourci est une chaîne de caractères qui représente un contexte dans lequel les raccourcis sont actifs. Il est généralement encodé sous forme d’enum. Lorsque vous modifiez le périmètre de raccourci, les raccourcis qui écoutent ce périmètre seront activés et ceux qui écoutent d’autres périmètres seront désactivés. Vous ne pouvez définir qu’un seul périmètre à la fois. Par exemple, les périmètres de raccourcis pour chaque page sont définis dans l’enum PageHotkeyScope :