ドキュメントに明記されている明確な方法はなく、ソリューションは機能しますが、実際には非常にエレガントではありません。私自身の推奨する解決策は、スクリプトブロック自体でカレーを使用することです。
const handleClick = (parameter) => () => {
// actual function
}
そしてHTMLで
<button on:click={handleClick('parameter1')>
It works...
</button>
カレーにご用心
コメントで述べたように、カレーには落とし穴があります。上記の例でhandleClick('parameter1')
はクリック時に発生せず、レンダリング時に発生する最も一般的なもので、onclickで発生する関数を返します。つまり、この関数は引数として常に「parameter1」を使用します。
したがって、このメソッドを使用しても安全なのは、使用されるパラメーターが何らかの定数であり、一度レンダリングされると変更されない場合だけです。
これは私に別のポイントをもたらします:
1)パラメータを使用した定数の場合、別の関数を使用することもできます
const handleParameter1Click = () => handleClick('parameter1');
2)値が動的であるがコンポーネント内で使用可能な場合、これはスタンドアロン関数で処理できます。
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3)値が動的であるが、これが何らかの種類のスコープ(例:#eachブロックでレンダリングされたアイテムのリスト)に依存しているためにコンポーネントから利用できない場合、「ハッキー」アプローチがよりうまく機能します。ただし、その場合は、リスト要素をコンポーネントとして使用し、ケース2にフォールバックする方がよいと思います。
結論として:カレーは特定の状況下で機能しますが、その使用方法について十分に認識して注意している場合を除き、推奨されません。