Dans React, la gestion des événements est effectuée à travers des écouteurs d'événements, comme onClick
, qui sont placés directement sur les éléments du DOM.
La question porte sur la méthode correcte pour gérer les événements dans React. L'option correcte est <button onClick={this.handleClick}>Cliquez moi</button>
. Ici, onClick
est un écouteur d'événements et this.handleClick
est une méthode classée dans le composant React.
Lorsqu'on utilise React, il est essentiel de comprendre que les méthodes sont généralement attachées à leur instance de classe. Par conséquent, utiliser this.handleClick
est correct car il fait référence à une méthode handleClick
définie dans le même composant.
Il est également crucial de remarquer que nous passons simplement une référence à la méthode handleClick
en écrivant {this.handleClick}
sans les parenthèses après handleClick
. Cela est dû au fait que nous voulons que la méthode soit appelée à l'instant où le click se produit, et non lors du rendering du composant.
Les trois autres options données ne sont pas syntactiquement correctes pour le traitement des événements dans React.
<button onClick='handleClick()'>Cliquez moi</button>
: La syntaxe pour onClick
est incorrecte. On ne peut pas passer une chaîne de caractères à l'attribut onClick
. Il attend une fonction.
<button onClick={handleClick()}>Cliquez moi</button>
: Ici, l'événement est immédiatement déclenché lors du rendering (c'est pourquoi nous avons les parenthèses). Cela n'a pas de sens car nous voulons que la fonction soit exécutée lors d'un clic, pas lors du rendering.
<button handle='onClick'>Cliquez moi</button>
: Dans ce cas, le mot-clé handle
n'est pas reconnu par React. La manière correcte d'ajouter un événement est d'utiliser onClick
ou un autre écouteur d'événements.
Il est bon de souligner que dans les composants de classe React, si vous référencez this.handleClick
sans lier this
à la méthode handleClick
dans le constructeur du composant, this
sera undefined
. Par conséquent, il est courant de voir this.handleClick = this.handleClick.bind(this)
dans le constructeur du composant. Toutefois, vous pouvez également utiliser des méthodes de classe avec des flèches pour éviter de lier this
.