Il n'y a aucun moyen clair mentionné dans la documentation et votre solution fonctionnera mais n'est en effet pas très élégante. Ma propre solution préférée consiste à utiliser le curry dans le bloc de script lui-même.
const handleClick = (parameter) => () => {
// actual function
}
Et dans le HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
Méfiez-vous du curry
Comme mentionné dans les commentaires, le curry a ses pièges. La plus courante qui, dans l'exemple ci-dessus handleClick('parameter1')
, ne sera pas déclenchée lors d'un clic, mais plutôt lors du rendu, renvoyant une fonction qui sera déclenchée à son tour. Cela signifie que cette fonction utilisera toujours 'parameter1' comme argument.
Par conséquent, l'utilisation de cette méthode ne serait sûre que si le paramètre utilisé est une constante quelconque et ne changera pas une fois rendu.
Cela m'amènerait à un autre point:
1) Si c'est une constante utilisée un paramètre, vous pouvez aussi bien utiliser une fonction séparée
const handleParameter1Click = () => handleClick('parameter1');
2) Si la valeur est dynamique mais disponible dans le composant, cela pourrait toujours être géré avec une fonction autonome:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) Si la valeur est dynamique mais n'est pas disponible à partir du composant car cela dépend d'une sorte de portée (par exemple: une liste d'éléments rendus dans un bloc #each), l' approche «hacky» fonctionnera mieux. Cependant, je pense qu'il serait préférable dans ce cas d'avoir les éléments de liste en tant que composants eux-mêmes et de revenir au cas # 2
Pour conclure: le curry fonctionnera dans certaines circonstances mais n'est pas recommandé à moins que vous ne soyez très bien informé et prudent sur la façon de l'utiliser.