了解我的自定义 Svelte 组件中是否有单击事件处理程序

Know if there's a click event handler in my custom Svelte component

提问人:cambraca 提问时间:6/10/2021 更新时间:11/4/2022 访问量:3276

问:

有没有办法知道我的自定义组件上是否设置了点击处理程序?我想向它添加一个CSS类来添加样式,但前提是点击时会发生一些事情。cursor: pointer;

为了说明这一点,下面可能是自定义组件:

<script>
  $: magic = ? // this is what I'm after
</script>

<div on:click
     class:pointer={magic}
>
  I might be clickable!
</div>

<style>
  .pointer {
    cursor: pointer;
  }
</style>
苗条

评论


答:

5赞 Zachiah 6/10/2021 #1

据我所知,由于事件的实现方式,这是不可能的,但是,如果您需要更精细的控制,仅使用道具并不一定是错误的。即

<script>
export let onClick = () => {}
</script>

<button on:click={onClick}>Hello</button>

这是苗条团队关于这个话题的评论

0赞 Long Vu 6/11/2021 #2

我认为您应该处理父元素中的点击事件,然后通过道具将变量从父元素传递到您的自定义元素magic

或者,您可以在自定义组件中处理单击事件,然后通过事件转发将事件调度到其父组件