W dokumentacji nie ma wyraźnego sposobu, a twoje rozwiązanie będzie działać, ale w rzeczywistości nie jest zbyt eleganckie. Moim preferowanym rozwiązaniem jest używanie curry w samym bloku skryptu .
const handleClick = (parameter) => () => {
// actual function
}
I w HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
Uważaj na curry
Jak wspomniano w komentarzach, curry ma swoje pułapki. Najczęstszy z nich, który w powyższym przykładzie handleClick('parameter1')
nie zostanie uruchomiony po kliknięciu, ale podczas renderowania, zwracając funkcję, która z kolei zostanie uruchomiona po kliknięciu. Oznacza to, że ta funkcja zawsze używa argumentu jako parametr1.
Dlatego użycie tej metody byłoby bezpieczne tylko wtedy, gdy użyty parametr jest pewnego rodzaju stałą i nie zmieni się po wyrenderowaniu.
To doprowadziłoby mnie do innego punktu:
1) Jeśli jest to stała używana parametr, równie dobrze możesz użyć oddzielnej funkcji
const handleParameter1Click = () => handleClick('parameter1');
2) Jeśli wartość jest dynamiczna, ale dostępna w komponencie, można to nadal obsługiwać za pomocą autonomicznej funkcji:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) Jeśli wartość jest dynamiczna, ale nie jest dostępna z komponentu, ponieważ zależy to od pewnego rodzaju zakresu (np. Listy elementów renderowanych w bloku #each) , podejście „hacky” będzie działać lepiej. Myślę jednak, że w takim przypadku lepiej byłoby mieć elementy listy jako komponent i wrócić do przypadku nr 2
Podsumowując: curry będzie działać w pewnych okolicznościach, ale nie jest zalecane, chyba że jesteś bardzo dobrze świadomy i ostrożny, jak go używać.