Нет четкого способа, упомянутого в документации, и ваше решение будет работать, но на самом деле оно не очень элегантно. Мое собственное предпочтительное решение - использовать curry в самом блоке script .
const handleClick = (parameter) => () => {
// actual function
}
И в HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
Остерегайтесь карри
Как уже упоминалось в комментариях, карри имеет свои подводные камни. Наиболее распространенный вариант, который в приведенном выше примере handleClick('parameter1')
не будет запускаться при нажатии, а скорее при рендеринге, возвращая функцию, которая, в свою очередь, будет запущена при нажатии. Это означает, что эта функция будет всегда использовать 'параметр1' в качестве аргумента.
Поэтому использование этого метода будет безопасным, только если используемый параметр является некоторой константой и не изменится один раз. это отрисовывается.
Это приведет меня к другому моменту:
1) Если это константа, использующая параметр, вы также можете использовать отдельную функцию
const handleParameter1Click = () => handleClick('parameter1');
2) Если значение является динамическим, но доступно внутри компонента, это все равно можно обработать с помощью отдельной функции:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) Если значение является динамическим, но недоступно для компонента, поскольку оно зависит откакая-то область видимости (например, список элементов, отображаемых в блоке #each), подход 'hacky' будет работать лучше. Однако я думаю, что в этом случае было бы лучше, если бы элементы списка сами были компонентом и вернулись к случаю № 2
В заключение: каррирование будет работать при определенных обстоятельствах, но не рекомендуется, если вы не оченьхорошо осведомлен и осторожен в том, как его использовать.