网站首页 行业快讯 > 正文
什么叫事件(不为人知的秘闻悬案)
DOM事件在下面的事例你将看到,您可以使用on:事件名来监听元素上的任何事件:
<divon:mousemove={handleMousemove}>Themousepositionis{m.x}x{m.y}</div>
完整代码:
<script>letm={x:0,y:0};functionhandleMousemove(event){m.x=event.clientX;m.y=event.clientY;}</script><divon:mousemove={handleMousemove}>Themousepositionis{m.x}x{m.y}</div><style>div{width:100%;height:100%;}</style>内联处理
您还可以使用内联声明事件处理程序:
<divon:mousemove="{e=>m={x:e.clientX,y:e.clientY}}">Themousepositionis{m.x}x{m.y}</div>
引号是可选的,但在某些环境中,它们有助于提高语法突显。
事件修饰符在某些框架中,您可能会看到由于性能原因而避免使用内联事件处理程序的建议,特别是在循环中。这个建议并不适用于Svelte,编译器总是会做正确的事情,不管你选择哪种形式。
DOM事件处理程序可以使用修饰符来改变其行为。例如,带有once修饰符的处理程序只运行一次:
<script>functionhandleClick(){alert('nomorealerts')}</script><buttonon:click|once={handleClick}>Clickme</button>
修饰符的完整列表:
preventDefault:在运行处理程序之前。例如,对于客户端窗体处理非常有用。
stopPropagation:阻止事件到达下一个元素。冒泡。
passive:提高触摸/滚轮事件的滚动性能(Svelte 会在安全的地方自动添加滚动)
nonpassive:可以查看使用 passive 改善的滚屏性能
capture:添加事件监听器时使用事件捕获模式,即元素自身触发的事件先在此处理,然后才交由内部元素进行处理。
once:只响应一次
self:只当在event.target是当前元素自身时触发处理函数,即事件不是从内部元素触发的。
你可以多个修饰符同时使用,例如:on:click|once|capture={...}
组件事件组件也可以分发事件。为此,它们必须创建一个事件分发器:
<script>import{createEventDispatcher}from'svelte';constdispatch=createEventDispatcher();functionsayHello(){dispatch('message',{text:'Hello!'});}</script>
当组件首次实例化时,必须调用createEventDispatcher。不可以在后续的函数中使用,例如setTimeout回调。这会使事件分发与组件实例绑定起来。
注意,由于on:message指令,App组件正在监听Inner组件发送的消息。这个指令是一个前缀为on:的属性,后面跟着我们要分发的事件名(在本例中是message)。
完整代码:
Inner.sevlte
<script>import{createEventDispatcher}from'svelte';constdispatch=createEventDispatcher();functionsayHello(){dispatch('message',{text:'Hello!'});}</script><buttonon:click={sayHello}>Clicktosayhello</button>
App.sevlte
<script>importInnerfrom'./Inner.svelte';functionhandleMessage(event){alert(event.detail.text);}</script><Inneron:message={handleMessage}/>
如果没有on:message这个属性,消息仍然会被发送,但是应用程序不会对此作出反应。您可以尝试删除on: message属性并再次按下按钮。
事件转发您还可以尝试将事件名称更改为其他名称。例如,在Inner.svelte中将dispatch ('message')更改为dispatch ('myevent') ,并在App.svelte组件中将属性名从on: message更改为on: myevent。
与DOM事件不同,组件事件不会冒泡。如果希望监听某个嵌套深度很深的组件上的事件,则中间组件必须转发该事件。
在本例中,我们有与前面相同的App.svelte和Inner.svelte,但是现在有一个Outer.svelte组件包含< inner/>。
版权说明: 本文由用户上传,如有侵权请联系删除!
- 上一篇: 世界最贵的汽车(全球最贵的10款车有哪几种)
- 下一篇: 顺丰春节停运(快递什么时候停运)
猜你喜欢:
- 2022-09-20 男人恶心是什么病的前兆(恶心是什么病的前兆)
- 2022-09-20 山东财经大学东方学院考研率怎么样(山东财经大学考研率是多少)
- 2022-09-20 广西最早的大学叫什么大学(在桂林设立的广西最早的大学是哪所大学)
- 2022-09-20 小儿肺炎有5个常见症状吗(小儿肺炎有5个常见症状)
- 2022-09-20 m是哪个服装品牌的标志(标志为M的衣服是什么牌子的)
- 2022-09-20 什么叫正比例什么叫反比例举例说明(什么叫反比例,举个例子说明,)
- 2022-09-20 一包烟要多少根烟丝(一包烟要多少根)
- 2022-09-20 男人吃樱桃对身体有什么好处(男人吃樱桃有什么好处)
最新文章:
- 2023-07-02 怎样挑选新鲜的猪肝?(怎么挑选新鲜猪肝 挑选新鲜猪肝的小技巧)
- 2023-07-02 木地板都有哪些种类(木地板的种类有哪些)
- 2023-07-02 白蜡木家具的优缺点(松木家具的优缺点)
- 2023-07-02 怎么清洗窗帘布上的污垢(怎么清洗窗帘)
- 2023-07-02 世界上最可爱的小仓鼠的样子(可爱小仓鼠的种类)
- 2023-07-02 小猫拉不出来屎怎么办(小猫拉不出屎怎么办)
- 2023-07-02 新飞小冰箱耗电量一天多少度(小冰箱耗电量一天多少度)
- 2023-07-02 公司注销工业房产怎么办手续(公司注销工业房产怎么办)
- 2023-07-02 凤凰层到底好还是不好(凤凰层是哪一层)
- 2023-07-02 马桶宽度空间留多少(马桶两边的空间大小是多少)
- 2023-07-02 如何训练猫咪小便(如何训练猫大小便)
- 2023-07-02 卫生间吊顶防潮层做法图集(卫生间吊顶方法是什么)
- 2023-07-02 狗狗为什么总是流口水怎么办(狗狗为什么爱流口水)
- 2023-07-02 卧室窗户漏水由谁负责维修(卧室窗户漏风怎么办)
- 2023-07-02 世界名猫大全(世界名猫你知道几种)
- 2023-07-02 applewatchseries7和6对比(apple watch series 7和6的区别)