首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘in’in :click`` work,in Svelte?

‘in’in :click`` work,in Svelte?
EN

Stack Overflow用户
提问于 2019-11-15 21:05:22
回答 2查看 3.4K关注 0票数 6

我正在试验Svelte和遵循官方教程。在https://svelte.dev/tutorial/reactive-assignments,我被指示使用这一行代码:

代码语言:javascript
复制
<button on:click={handleClick}>

冒号的目的是什么?为什么不是简单的<button onclick=...

我找到了关于元素指令的Svelte API文档,它在Svelte中提供了使用示例,但是我仍然不明白这是如何有效的JS语法,或者它是如何被转换成这样的。我不明白冒号是如何工作的(与理解它的用法不同)。

我可以理解,这是为所有DOM事件属性实现单一指令的一种方法,但它的实际功能对我来说并不那么透明。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-16 21:11:33

其他人已经解释了将其编译到JavaScript中的要点,因此我将讨论以下部分:

为什么不是简单的<button onclick=...

onclick属性是一个现有的HTML属性(不应该使用)。语义非常不同--当单击发生时,字符串值被计算为JavaScript。这是一种糟糕的做法,因为您调用的任何函数都必须位于全局范围内。

on:click是一个将按钮的单击事件链接到本地定义函数的Sveltism。:是一种通用语法,它说‘这是指令而不是属性’--其中‘:’可以表示事件处理程序(on:...)、绑定(bind:...)、转换on:...等等。

票数 12
EN

Stack Overflow用户

发布于 2020-02-13 11:58:04

在编译步骤之后,svelte <button on:click ... />成为该按钮上事件“单击”的正常事件侦听器。getEventListeners(elem)将揭示这一点。这就是为什么可以使用多个处理程序,例如<button on:click on:doWhatever...> So,相当于在普通js中添加elem.addEventListener()。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58884662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档