In der Dokumentation wird kein klarer Weg erwähnt, und Ihre Lösung wird funktionieren, ist aber in der Tat nicht sehr elegant. Meine eigene bevorzugte Lösung ist die Verwendung currying im Skript selbst blockieren.
const handleClick = (parameter) => () => {
// actual function
}
Und im HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
Vorsicht vor Curry
Wie in den Kommentaren erwähnt, hat Curry seine Tücken. Die häufigste, die im obigen Beispiel handleClick('parameter1')
nicht beim Klicken, sondern beim Rendern ausgelöst wird und eine Funktion zurückgibt, die wiederum beim Klicken ausgelöst wird. Dies bedeutet, dass diese Funktion immer 'parameter1' als Argument verwendet.
Daher ist die Verwendung dieser Methode nur dann sicher, wenn der verwendete Parameter eine Konstante ist und sich nach dem Rendern nicht ändert.
Dies würde mich zu einem anderen Punkt bringen:
1) Wenn es sich um eine Konstante handelt, die einen Parameter verwendet, können Sie auch eine separate Funktion verwenden
const handleParameter1Click = () => handleClick('parameter1');
2) Wenn der Wert dynamisch ist, aber innerhalb der Komponente verfügbar ist, kann dies weiterhin mit einer eigenständigen Funktion behandelt werden:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) Wenn der Wert dynamisch ist, aber nicht in der Komponente verfügbar ist, da dies von einem bestimmten Bereich abhängt (z. B. einer Liste von Elementen, die in einem # jedes Block gerendert werden) , funktioniert der 'hacky'- Ansatz besser. Ich denke jedoch, dass es in diesem Fall besser wäre, die Listenelemente selbst als Komponente zu haben und auf Fall 2 zurückzugreifen
Fazit: Currying funktioniert unter bestimmten Umständen, wird jedoch nicht empfohlen, es sei denn, Sie wissen genau, wie Sie es verwenden.