如何在 Svelte 中的不同事件上触发相同的功能

lef*_*ost 8 javascript svelte

我有:

<a href={link} on:click={() => func(param)} on:auxclick={() => func(param)}>
   click
</a>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将on:click和组合on:auxclickon:click|auxclick,或者类似这种效果的东西吗?(下面的代码给了我一个语法错误。)

<a href={link} on:click|auxclick={() => func(param)}>
   click
</a>
Run Code Online (Sandbox Code Playgroud)

编辑:为了更清楚的描述

zer*_*dox 7

不,如果不创建命名函数,这是不可能的。
您提出的语法:on:click|auxclick={func}已由事件修饰符功能保留(您可以从此处了解它们)


将来你也许可以监听所有事件 - 提案和语法可以在github 上的问题中找到

UPD:还建议您查看@kindoflew 答案。您可以使用自定义操作来实现此操作。


小智 5

您可以使用操作并手动设置要侦听的事件:

// multiClicks.js

export const multiClicks = (node, callback) => {
  node.addEventListener('click', callback)
  node.addEventListener('auxclick', callback})

  return {
    destroy() {
      node.removeEventListener('click', callback)
      node.removeEventListener('auxclick', callback})
    } 
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的组件中使用它:

<script>
  import { multiClicks } from './multiClicks.js'
</script>

<a use:multiClicks={() => func(param)}>...</a>
Run Code Online (Sandbox Code Playgroud)