Currying avec un exemple ES6 :
const clickHandler = param => event => {
console.log(param); // your parameter
console.log(event.type); // event type, e.g.: click, etc.
};
Notre bouton, qui fait basculer le gestionnaire :
<button onClick={(e) => clickHandler(1)(e)}>Click me!</button>
Si vous voulez appeler cette expression de fonction sans objet d'événement, vous l'appelez de cette façon :
clickHandler(1)();
De plus, étant donné que react utilise des événements synthétiques (une enveloppe pour les événements natifs), il y a une fonction regroupement d'événements ce qui signifie que, si vous voulez utiliser votre event
de manière asynchrone, vous devrez alors utiliser la fonction event.persist()
:
const clickHandler = param => event => {
event.persist();
console.log(event.target);
setTimeout(() => console.log(event.target), 1000); // won't be null, otherwise if you haven't used event.persist() it would be null.
};
Voici un exemple concret : https://codesandbox.io/s/compassionate-joliot-4eblc?fontsize=14&hidenavigation=1&theme=dark