
Einführung
Wenn Sie eine Tastenkombination abhören müssen, verwenden Sie normalerweise denonKeyDown Event-Listener.
In twenty-front jedoch könnten Sie Konflikte zwischen gleichen Tastenkombinationen haben, die in verschiedenen Komponenten, die gleichzeitig eingebunden sind, verwendet werden.
Zum Beispiel, wenn Sie eine Seite haben, die auf die Enter-Taste hört, und ein Modal das auf die Enter-Taste hört, und ein Select-Element innerhalb dieses Modals auf die Enter-Taste hört, könnte ein Konflikt entstehen, wenn alle gleichzeitig eingebunden sind.
Der useScopedHotkeys Hook
Um dieses Problem zu lösen, verfügen wir über einen benutzerdefinierten Hook, der es ermöglicht, auf Tastenkombinationen zu hören, ohne Konflikte.
Sie platzieren ihn in einer Komponente, und er wird auf die Tastenkombinationen nur hören, wenn die Komponente eingebunden ist UND wenn der spezifizierte Tastenkombinationsbereich aktiv ist.
Wie hört man in der Praxis auf Tastenkombinationen?
Es gibt zwei Schritte, um das Abhören von Tastenkombinationen einzurichten:- Setzen Sie den Tastenkombinationsbereich, der auf Tastenkombinationen hören wird
- Verwenden Sie den
useScopedHotkeysHook, um auf Tastenkombinationen zu hören
Anwendungsfälle für Tastenkombinationen
Im Allgemeinen haben Sie zwei Anwendungsfälle, die Tastenkombinationen erfordern:- Auf einer Seite oder einer Komponente, die auf einer Seite eingebunden ist
- In einer Modal-Komponente, die wegen einer Benutzeraktion den Fokus erhält
Auf Tastenkombinationen in einer Seite hören
Beispiel:Auf Tastenkombinationen in einer Modal-Komponente hören
Für dieses Beispiel verwenden wir eine Modalkomponente, die auf die Escape-Taste hört, um ihrem übergeordneten Element mitzuteilen, dass sie geschlossen werden soll. Hier ändert die Benutzerinteraktion den Bereich.Was ist ein Tastenkombinationsbereich?
Ein Tastenkombinationsbereich ist ein String, der einen Kontext darstellt, in dem die Tastenkombinationen aktiv sind. Er wird im Allgemeinen als Enum kodiert. Wenn Sie den Tastenkombinationsbereich ändern, werden die Tastenkombinationen aktiviert, die auf diesen Bereich hören, und die Tastenkombinationen, die auf andere Bereiche hören, werden deaktiviert. Sie können immer nur einen Bereich gleichzeitig setzen. Als Beispiel sind die Tastenkombinationsbereiche für jede Seite imPageHotkeyScope Enum definiert: