Non c'è un modo chiaro menzionato nella documentazione e la tua soluzione funzionerà ma in effetti non è molto elegante. La mia soluzione preferita è usare il curry nel blocco di script stesso.
const handleClick = (parameter) => () => {
// actual function
}
E in HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
Attenzione al curry
Come menzionato nei commenti, il curry ha le sue insidie. Quello più comune che nell'esempio sopra handleClick('parameter1')
non verrà attivato quando si fa clic ma piuttosto sul rendering, restituendo una funzione che a sua volta verrà attivata sul clic. Ciò significa che questa funzione utilizzerà sempre 'parametro1' come argomento.
Pertanto, l'utilizzo di questo metodo sarebbe sicuro solo se il parametro utilizzato è una costante di qualche tipo e non cambierà una volta eseguito il rendering.
Questo mi porterebbe ad un altro punto:
1) Se si utilizza una costante come parametro, è possibile utilizzare anche una funzione separata
const handleParameter1Click = () => handleClick('parameter1');
2) Se il valore è dinamico ma disponibile all'interno del componente, questo potrebbe ancora essere gestito con una funzione autonoma:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) Se il valore è dinamico ma non disponibile dal componente perché dipende da un tipo di ambito (es: un elenco di elementi renderizzati in un blocco #each) l' approccio 'hacky' funzionerà meglio. Tuttavia, penso che sarebbe meglio in quel caso avere gli elementi della lista come componente stessi e tornare al caso n. 2
Per concludere: il curry funzionerà in determinate circostanze ma non è raccomandato a meno che tu non sia ben consapevole e attento su come usarlo.