| HTML natif | React (JSX) |
|---|---|
onclick="maFonction()" | onClick={maFonction} |
| Nom en minuscules | Nom en camelCase |
String avec () | Référence de fonction (sans parenthèses !) |
// ❌ HTML classique
<button onclick="handleClick()">Clic</button>
// ✅ React JSX
<button onClick={handleClick}>Clic</button>
// ^ ^
// pas de () ni de guillemets
onClick={handleClick()} avec les parenthèses exécute la fonction immédiatement au rendu ! On passe une référence, pas un appel.
| Événement | Se déclenche quand… | Éléments typiques |
|---|---|---|
onClick | Clic sur l'élément | button, div, a… |
onChange | Valeur modifiée | input, select, textarea |
onSubmit | Formulaire soumis | form |
onMouseEnter | Souris entre | Tout élément |
onMouseLeave | Souris sort | Tout élément |
onKeyDown | Touche pressée | input, textarea |
onKeyUp | Touche relâchée | input, textarea |
onFocus | Élément reçoit le focus | input, button… |
onBlur | Élément perd le focus | input, button… |
onDoubleClick | Double-clic | Tout élément |
React enveloppe les événements natifs dans un SyntheticEvent compatible cross-browser :
function MonInput() {
const handleChange = (e) => {
// e = SyntheticEvent (wrapper React)
console.log(e.target.value); // Valeur de l'input
console.log(e.target.name); // Attribut name
console.log(e.type); // "change"
console.log(e.nativeEvent); // L'événement DOM natif
};
return <input onChange={handleChange} name="prenom" />;
}
e.target — l'élément DOM qui a déclenché l'événemente.target.value — la valeur (pour input, select, textarea)e.preventDefault() — empêche le comportement par défaute.stopPropagation() — empêche la propagatione.key — la touche pressée (pour onKeyDown)function ListeBoutons() {
const handleClick = (nom) => {
alert(`Tu as cliqué sur ${nom}`);
};
return (
<div>
{/* Méthode 1 : Fonction fléchée inline */}
<button onClick={() => handleClick('Alice')}>Alice</button>
{/* Méthode 2 : bind */}
<button onClick={handleClick.bind(null, 'Bob')}>Bob</button>
</div>
);
}
// Si on veut aussi l'événement :
const handleClick = (nom, e) => {
console.log(nom, e.target);
};
<button onClick={(e) => handleClick('Alice', e)}>Alice</button>
function MonFormulaire() {
const handleSubmit = (e) => {
e.preventDefault(); // Empêche le rechargement de la page
console.log("Formulaire soumis !");
};
return (
<form onSubmit={handleSubmit}>
<input type="text" placeholder="Nom" />
<button type="submit">Envoyer</button>
</form>
);
}
▼ Tester différents types d'événements
onClick, onChange, onSubmit…onClick={fn}.e.target.value pour la valeur, e.preventDefault() pour annuler le défaut.onClick={() => fn(arg)}.