J'ai vu beaucoup d'endroits reactjs où une fonction est appelée comme ci-dessous
onChange = {this.fileSelected}
alors que j'ai vu son utilisation comme ci-dessous également
onClick = {() => this.clearDisplay ()}
3 Réponses :
Si vous utilisez First:
onClick={() => this.clearDisplay()}
Il ne s'exécutera que lorsque onChange sera appelé. Si vous voulez lier cette fonction, vous devez la déclarer dans le constructeur de la classe de composant comme ceci:
constructor(props) {
super(props);
this.state = {
// your state
};
this.clearDisplay = this.clearDisplay.bind(this);
}
La deuxième:
onChange = {this.fileSelected}
onChange = {this.fileSelected} ne s'exécutera pas sur chaque rendu. Il ne s'exécutera que lorsque onChange sera appelé. c'est ce que font les fonctions de rappel selon ES6.
onChange={this.fileSelected}
Est préférable car il est capable de ne pas provoquer de ré-rendus inutiles.
onClick = {() => this.clearDisplay ()}
Lorsque vous passez une fonction anonyme comme celle-ci, elle sera en fait appelée sur toutes les instances de la classe au lieu de celle sur laquelle l'événement a été déclenché.
D'un niveau élevé, il peut sembler qu'ils aient le même comportement, mais si vous utilisiez la deuxième méthode de manière cohérente sur une base de code importante, les performances de votre application en souffriraient.
Cet article approfondit la question:
La première option est capable de ne pas provoquer de redistribution inutile. Cela n'améliore pas automatiquement tout.
onChange = {this.fileSelected}
Cela dirigera la fonction de liaison fileSelected vers la méthode onChange . Ainsi, lorsque la méthode onChange sera appelée, elle appellera la fonction fileSelected .
tandis que
onClick = {() => this.clearDisplay ()}
Cela appellera la fonction onClick dans laquelle vous appelez la fonction clearDisplay . Ainsi, lorsque vous avez appelé la méthode onClick, d'abord anonyme appelée dans laquelle la fonction clearDisplay est appelée. Donc, fondamentalement, dans cette méthode, deux fonctions sont appelées. dans cette methos, vous pouvez faire des appels supplémentaires ou d'autres choses
par exemple
onClick={() => { console.log("this function called") this.clearDisplay(); }