Não há uma maneira clara mencionada na documentação e sua solução funcionará, mas de fato não é muito elegante. Minha própria solução preferida é usar currying no próprio bloco de scripts .
const handleClick = (parameter) => () => {
// actual function
}
E no HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
Cuidado com o curry
Como mencionado nos comentários, o curry tem suas armadilhas. A mais comum que no exemplo acima handleClick('parameter1')
não será acionada ao clicar, mas na renderização, retornando uma função que por sua vez será acionada ao clicar. Isso significa que essa função sempre usará 'parameter1' como argumento.
Portanto, o uso desse método só seria seguro se o parâmetro usado for uma constante de algum tipo e não será alterado após a renderização.
Isso me levaria a outro ponto:
1) Se é uma constante usada um parâmetro, você também pode usar uma função separada
const handleParameter1Click = () => handleClick('parameter1');
2) Se o valor for dinâmico, mas disponível no componente, isso ainda poderá ser tratado com uma função autônoma:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) Se o valor for dinâmico, mas não estiver disponível no componente, porque isso depende de algum tipo de escopo (por exemplo: uma lista de itens renderizados em um bloco #each) a abordagem 'hacky' funcionará melhor. No entanto, acho que seria melhor, nesse caso, ter os elementos da lista como um componente e voltar ao caso 2
Para concluir: o curry funcionará sob determinadas circunstâncias, mas não é recomendado, a menos que você esteja muito ciente e cuidadoso sobre como usá-lo.