Ich benutze React-Keydown-Bibliothek zum Hinzufügen von Tastenkombinationen zu meiner Anwendung, kann aber nicht in innere Dialoge Komponenten arbeiten. Die Dialoge sind nicht immer sichtbar, aber ich erwarte, dass die Tasten funktionieren, wenn sie sichtbar sind. ich bin immer zu event_handlers.js._onKeyDown (event) Methode, aber mit fehlendem Wert: fn = undefined, während fn sollte die eingerichtete Funktion enthalten.fangen Keydown-Ereignisse in inneren Komponenten mit react-keydown
Meine Komponenten wie folgt aussieht:
<Container>
<MyDialog>
<material-ui-dialog/>
</MyDialog>
</Container>
Container.js:
import keydown from 'react-keydown'
class Container extends Component {
@keydown('enter')
someMethod1(){
// working
}
render() {
return (
<div>
<MyDialog/>
</div>
)
}
}
MyDialog.js:
import keydown, {keydownScoped} from 'react-keydown'
@keydown('enter')
class MyDialog extends Component {
@keydownScoped('enter')
someMethod3(){
// not working
}
}
Welche Logik bestimmt, ob es sichtbar ist oder nicht? Können Sie außerdem bestätigen, dass Sie nicht versuchen, die keygebundene Methode auszulösen, wenn Sie sich auf ein Formularfeld konzentrieren? – glortho
Der Dialog ist nicht immer sichtbar. Es handelt sich um einen Bestätigungsdialog (der einen Material-Dialog enthält), der durch eine andere Aktion in der Komponente ausgelöst wird. Es gibt kein Eingabefeld oder Textbereich in der Komponente, nur ein Dialog mit OK/Abbrechen-Schaltflächen. – user1813302
Wird es montiert, auch wenn es nicht sichtbar ist? Das Problem könnte sein, dass, wenn es bereits gemountet, aber versteckt ist, und Sie auf eine Komponente außerhalb des Bereichs der Dialogkomponente klicken oder eine Tabulatortaste drücken, die Tastaturbelegung nicht reagiert. – glortho