svelte教程(5)事件
DOM 事件
事件绑定
<script>
let m = { x: 0, y: 0 };
function handleMousemove(event) {
m.x = event.clientX;
m.y = event.clientY;
}
</script>
<style>
div {
margin: 0 auto;
width: 500px;
height: 500px;
background: seagreen;
}
</style>
<div on:mousemove={handleMousemove}>The mouse position is {m.x} x {m.y}</div>
您还可以内联声明事件处理程序,并且因为svelte实际上是一个编译器,所以并不会影响性能。
<script>
let m = { x: 0, y: 0 };
</script>
<style>
div {
margin: 20px auto;
width: 500px;
height: 500px;
background: seagreen;
}
</style>
<div
on:mousemove={e => {
m.x = e.clientX;
m.y = e.clientY;
}}>
The mouse position is {m.x} x {m.y}
</div>
事件修饰符
事件可以拥有改成其行为的修饰符。
- preventDefault:阻止默认事件
- stopPropagation:停止事件的传播
- passive:改善了触摸/滚轮事件的滚动性能(Svelte会在安全的地方自动添加)
- capture:事件在捕获阶段触发
- once:事件运行一次后取消监听
- self:仅当event.target是元素本身时才触发
您可以将修饰符链接在一起,例如on:click|once|capture={...}
组件事件
组件也可以触发事件。
Inner.svelte
<script>
import { createEventDispatcher } from 'svelte';
const dispatch = createEventDispatcher();
function sayHello() {
dispatch('message', {
text: 'Hello!'
});
}
</script>
<button on:click={sayHello}>
Click to say hello
</button>
index.svelte
<Inner on:message={e=>{alert(e.detail.text)}}/>
createEventDispatcher必须在首次实例化组件时调用它-稍后无法在内部(例如setTimeout回调)进行调用。
事件转发
createEventDispatcher方法触发的事件不会进行冒泡。我们可以通过在外层组件监听message方法再转发到index.svelte。
// outer.svelte
<script>
import Inner from "./Inner";
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
function forward(event) {
dispatch("message", event.detail);
}
</script>
<Inner on:message={forward} />
// index.svelte
<Outer on:message={e => {
alert(e.detail.text);
}} />
如果on:message没有值可以转发所有message事件:
// outer.svelte
<script>
import Inner from "./Inner";
</script>
<Inner on:message/>
// index.svelte
<Outer on:message={e => {
alert(e.detail.text);
}} />
DOM 事件转发
事件转发一样可以用在dom事件上:
// FancyButton.svelte
<style>
button {
font-family: 'Comic Sans MS';
font-size: 2em;
padding: 0.5em 1em;
color: royalblue;
background: gold;
border-radius: 1em;
box-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}
</style>
<button on:click>
Click me
</button>
// index.svelte
<script>
import FancyButton from './FancyButton.svelte';
function handleClick() {
alert('clicked');
}
</script>
<FancyButton on:click={handleClick}/>
本教程的所有代码均上传到github有需要的同学可以参考 https://github.com/sullay/svelte-learn。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
JavaScript基本数据类型分析
JavaScript基本数据类型分析,相信接触过Java的小伙伴们都知道,Java是一门强大的编程语言,在现今互联网行业中,Java的身影可谓是随处可见的,可能刚刚开始学习的小伙伴会因Java编程语言庞大的体系而震惊,但是知识是需要日积月累的,没有人能够一口吃成个胖子。我们所看到的Java高手们,也是通过一行行代码努力编写出来。那么作为新人在初学Java的时候应该学习哪些技术呢? 1、HTML:HTML超文本标记语言,这是用来在浏览器上生成用户所看到的网页的,我们需要对他有一个深入的了解,目前市场上在用的是HTML5。 2、CSS:他是HTML的样式表,用来显示浏览器上网页的样式的,也就是控制网页的字体,颜色,大小,宽高,也可以使网页在浏览器上的效果变成动态的。 3、JavaScript,它和Java在语法上面有一部分hi比较相似,但是它们是相对独立的语言,JS能够让某些简单的业务处理在浏览器上计算并提交到后台,还能够改变浏览器的CSS,让我们制作出来的网页的功能更为强大。 看到这里,许多人会问,Java是一个后端开发语言,为什么还要去学前端的语言知识呢? 现在各大企业对于人才的需求,...
-
下一篇
每一页都是干货,这10本Python新书,我必须推荐给你
十一长假归来,小编带来10本Python新书,每一本都是干货满满不可错过,同时分享你的假期阅读心得,还有机会获取哦。 1 Python 快速入门(第3版) 书名:《Python 快速入门(第3版)》 作者:[美]娜奥米·塞德(Naomi Ceder) 译者:戴旭 编辑推荐: 明确涵盖Python 3,全面介绍核心库、包和工具; 配备精深的习题; 新增5章与数据科学相关的内容。 这是一本Python快速入门书,基于Python 3.6编写,分为4个部分,第一部分讲解Python的基础知识,对Python进行概要的介绍,第二部分介绍Python编程的重点,第三部分阐释Python的高级特性,第四部分关注数据处理,最后给出了相关案例。本书框架结构清晰,内容编排合理,讲解循序渐进,并结合大量示例和题目,既适合Python初学者学习,也适合作为专业程序员的Python参考书。 2 Python编程无师自通——专业程序员的养成 书名:《Python编程无师自通——专业程序员的养成》 作者:[美] 科里•奥尔索夫(Cory Althoff) 译者:宋秉金 编辑推荐: 畅销Python编程类入门书,美...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- MySQL数据库在高并发下的优化方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能