Comment détecter une pression sur la touche Esc dans reactjs ? La chose similaire à jquery
$(document).keyup(function(e) {
if (e.keyCode == 27) { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
Une fois détecté, je veux transmettre l'information aux composants. J'ai 3 composants dont le dernier composant actif doit réagir à la pression de la touche Echap.
Je pensais à une sorte d'enregistrement de l'activation d'un composant.
class Layout extends React.Component {
onActive(escFunction){
this.escFunction = escFunction;
}
onEscPress(){
if(_.isFunction(this.escFunction)){
this.escFunction()
}
}
render(){
return (
<div class="root">
<ActionPanel onActive={this.onActive.bind(this)}/>
<DataPanel onActive={this.onActive.bind(this)}/>
<ResultPanel onActive={this.onActive.bind(this)}/>
</div>
)
}
}
et sur tous les composants
class ActionPanel extends React.Component {
escFunction(){
//Do whatever when esc is pressed
}
onActive(){
this.props.onActive(this.escFunction.bind(this));
}
render(){
return (
<input onKeyDown={this.onActive.bind(this)}/>
)
}
}
Je crois que cela fonctionnera mais je pense que ce sera plutôt un rappel. Y a-t-il une meilleure façon de gérer cela ?
0 votes
N'avez-vous pas une implémentation de flux pour stocker le composant actif au lieu de le faire de cette façon ?
0 votes
@BenHare : Je suis encore assez novice en la matière. J'étudie la possibilité de migrer vers React. Je n'ai pas essayé flux, donc vous suggérez que je devrais regarder dans flux pour la solution. PS : Que diriez-vous de détecter une pression sur la touche ESC ?
5 votes
Pour clarifier, cherchez-vous à détecter les pressions sur les touches au niveau du document, comme le premier bloc de code ? Ou est-ce pour un champ de saisie ? Vous pouvez faire l'un ou l'autre, mais je ne suis pas sûr de savoir comment formuler une réponse. Voici un exemple rapide au niveau du document : codepen.io/anon/pen/ZOzaPW
0 votes
Le niveau du document serait parfait :)