J'utilise la bibliothèque reac-keydown pour ajouter des raccourcis clavier à mon application, mais je ne peux pas la faire fonctionner dans les composants de boîtes de dialogue internes. Les boîtes de dialogue ne sont pas toujours visibles, mais je m'attends à ce que les touches fonctionnent lorsqu'elles sont visibles. Je suis en train de event_handlers.js._onKeyDown (événement) méthode, mais avec une valeur manquante: fn = non défini, alors que fn doit contenir la fonction décorée.intercepter les événements de keydown dans les composants internes en utilisant rea-keydown
Mes composants ressemble:
<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
}
}
Quelle est la logique qui détermine si elle est visible ou non? En outre, pouvez-vous confirmer que vous n'essayez pas de déclencher la méthode liée à la clé lorsque vous vous concentrez sur un champ de formulaire? – glortho
La boîte de dialogue n'est pas toujours visible. C'est une boîte de dialogue de confirmation (qui contient une boîte de dialogue matérielle) qui est déclenchée par une autre action du composant. Il n'y a pas de champ de saisie ou de zone de texte dans le composant, seulement une boîte de dialogue avec les boutons ok/cancel. – user1813302
Est-il monté même quand il n'est pas visible? Le problème pourrait être que s'il est déjà monté, mais caché, et que vous cliquez ou tabulez sur un composant en dehors de la portée du composant de dialogue, les raccourcis clavier ne répondront pas. – glortho