StencilJs学习之事件

news/2024/12/5 7:58:39/

其实并没有所谓的 stencil Event,相反 stencil 鼓励使用 DOM event。然而,Stencil 提供了一个 API 来指定组件可以触发的事件,以及组件监听的事件。 这是通过 Event()和 Listen()装饰器实现的。

Event 装饰器

组件可以使用事件发射器装饰器发送数据和事件。

要将自定义 DOM 事件分发给其他组件处理,可以使用@Event()装饰器。

import { Event, EventEmitter } from '@stencil/core';...
export class TodoList {@Event() todoCompleted: EventEmitter<Todo>;todoCompletedHandler(todo: Todo) {this.todoCompleted.emit(todo);}
}

上面的代码将 dispatch 一个名为 todoCompleted 的自定义 DOM 事件。

EventOptions

interface EventOptions {/*** 自定义事件名称*/eventName?: string;/*** 表明事件是否允许冒泡*/bubbles?: boolean;/*** 表明事件是否允许取消*/cancelable?: boolean;/*** 表示事件是否可以跨越shadow DOM和regular DOM的边界*/composed?: boolean;
}

Listen 装饰器

Listen() 装饰器用于监听 DOM 事件,包括从 @Events 分发的事件。当组件从 DOM 中添加或删除时,事件监听器会自动添加或删除。

在下面的示例中,假设子组件 TodoList 使用 EventEmitter 触发 todoCompleted 事件。

import { Listen } from '@stencil/core';...
export class TodoApp {@Listen('todoCompleted')todoCompletedHandler(event: CustomEvent<Todo>) {console.log('Received the custom todoCompleted event: ', event.detail);}
}

ListenOptions

interface ListenOptions {target?: "body" | "document" | "window"; // 如果target属性不设置值,则默认监听host(宿主元素)capture?: boolean;passive?: boolean;
}

使用组件的自定义事件

在 jsx 中使用

// 在stencilJs项目内使用
import { Event, EventEmitter } from '@stencil/core';...
export class TodoList {@Event() todoCompleted: EventEmitter<Todo>;todoCompletedHandler(todo: Todo) {this.todoCompleted.emit(todo);}
}

常规使用

<todo-list></todo-list>
<script>const todoListElement = document.querySelector("todo-list");todoListElement.addEventListener("todoCompleted", (event) => {/* your listener */});
</script>

结束语

至此,我们已经基本把 StencilJs 的相关基础知识已经学习的差不多了,由于 stencilJs 使用的 tsx
来开发的,所以在下一章节中将会学习如何使用 tsx


http://www.ppmy.cn/news/482950.html

相关文章

【AntDB数据库】AntDB数据库服务启停(一)

数据库服务启停 集群启停 psql到adbmgr上&#xff0c;可以对集群进行启停操作。 停止集群&#xff1a; stop all;停止agent&#xff1a; stop agent all;启动agent&#xff1a; start agent password xxxxxx ;启动集群&#xff1a; start all;执行完命令后&#xff0c;可…

苹果xsmax有高通基带吗_苹果xs max支持5g吗

苹果xs max并不支持5G网络&#xff0c;而且消费者并不能通过简单的软件升级让iPhone XS Max支持5G网络&#xff1b;预计苹果搭载高通5G基带的iPhone手机最早会在2020年左右面世&#xff0c;因此iPhone XS Max不太可能会推出支持5G的版本。以下是详细介绍&#xff1a; 1、苹果xs…

iPhone12、iPhone12 Pro、iPhone12 Max、iPhone12 Pro Max上市时间已定 iPhone12售价曝光

据爆料&#xff0c;iPhone12系列手机将会在10月份发布。搭载苹果最新的A14处理器&#xff0c;外观承袭iPhone4S金属中框双面玻璃的经典方正设计。 iphone11爆降2000太给力了 https://www.apple.com.cn iPhone12系列电池信息正式发布&#xff0c;12系列有5.4英寸、6.1英寸和最大…

苹果亮度突然变暗_苹果最好的旗舰手机,iPhone11Pro Max你用上了吗?

6.5英寸的OLED屏幕使用了“真彩技术”&#xff0c;这可以让屏幕更好的根据环境照明条件动态调节屏幕的白平衡和刷新率——在实际测试中屏幕内容的流畅度比起iPad Pro还差了一些。屏幕似乎还需要颜色较准&#xff0c;在显示纯白色内容是屏幕的颜色有些偏黄。尤其是存在另一块屏幕…

android资料转移到iphone,安卓手机内的资料如何转移到iPhone XS/XS Max?

iPhone XS/XS Max已经拿到手了吗&#xff1f;如果之前使用的是安卓手机&#xff0c;如何将旧手机里面的资料转移到新款iPhone中呢&#xff1f; 大家不用担心这个问题&#xff0c;对于新加入iPhone阵营的用户&#xff0c;苹果官方可是非常欢迎的&#xff0c;而且专门为用户打造了…

苹果xsmax怎么开机_粉丝水洗苹果XS MAX手机不开机,Face ID报废,你还这么做吗?...

手机进水是一个非常常见的现象&#xff0c;相信很多小伙伴都有手机不小心掉到水里的痛苦经历。意外进水只能尽量避免&#xff0c;但是用水直接洗手机&#xff0c;真是仗着手机IP68级别的防水来着&#xff01;尤其是iPhone的面容ID识别功能&#xff0c;沾水就会报废&#xff0c;…

MAX-SUM算法

本文的主要目的就是使用MAX-SUM算法在无线传感器网络中使系统的应用获得最佳的性能,一个无线传感器网络的主要结构如下所示: 图2.2 无线传感器网络的基本结构 从图2.2可以看到,无线传感器网络的基本组成可以分为传感器,接口,控制器,系统驱动等几个组成。 MAX-SUM算法是一…