@ equinor/ 组合框架- 模块- 事件
Async事件为Fusion框架发送模块. 通过以本地 DOM 为模式的事件系统,实现框架模块(兄弟姐妹)之间以及父母/子女之间的类型安全通信 EventTarget不过 同步发送 因此可以正确等待可取消的事件.
重要内容: 发送时a
cancelable事件 必须await页:1dispatchEvent电话 发射而无await表示preventDefault()听众的电话不会被尊重.
谁应该用这个
- 模块作者 其他模块可以作出反应.
- 应用程序开发者 想要截取、记录或取消流经框架的事件.
- 图书馆消费者 用于分析、调试或交叉关切.
文档
| 专题 | 说明 |
|---|---|
| 配置 | onDispatch编号 :onBubble 通过钩子和注册自定义事件类型 FrameworkEventMap |
| 可观察模式 | event$, (中文(简体) ), filterEvent,则 ./operators 子路径 |
| 生命周期 | 调度顺序、可取消的事件和起伏 |
| 测试 | waitForEvent, (中文(简体) ), watchEvents,并使用铃声 ModulesConfigurator 测试中 |
快开始
安装
pnpm add @equinor/fusion-framework-module-event
事件模块在初始化Fusion框架时默认包含在内,因此只有在独立使用时才需要明确安装.
听一个事件
const teardown = modules.event.addEventListener('onModulesLoaded', (event) => {
console.log('All modules loaded:', event.detail);
});
// remove the listener when no longer needed
teardown();
发送活动
const event = await modules.event.dispatchEvent('myEvent', {
detail: { id: 42 },
cancelable: true,
});
if (!event.canceled) {
performAction();
}
API 概览
| 导出 | 仁爱 | 目的 |
|---|---|---|
FrameworkEvent | 类 | 基本活动 detail, (中文(简体) ), source,取消/泡泡旗帜 |
FrameworkEventInit | 类型 | 构建事件时通过的选项 |
FrameworkEventMap | 接口 | 广泛的登记册绘图事件名称 事件类型 |
FrameworkEventHandler | 类型 | 听取者召回签名( 同步或同步) |
IEventModuleProvider | 接口 | 事件提供者的公共 API (P)addEventListener, (中文(简体) ), dispatchEvent, (中文(简体) ), event$(中文(简体) ) |
EventModuleProvider | 类 | 默认提供者执行 |
EventModuleConfig | 类型 | 已解析的配置钩( R)onDispatch, (中文(简体) ), onBubble(中文(简体) ) |
EventModuleConfigurator | 类 | 流利的配置构建器( S)setOnDispatch, (中文(简体) ), setOnBubble()——见 配置 |
IEventModuleConfigurator | 类型 | 折旧 别名用于 EventModuleConfig |
filterEvent | 函数 | RxJS 运算符缩小 event$ 改为单个已注册事件类型 |
EventModule 编号 : eventModuleKey | 类型/ 连接 | 模块定义和密钥'event'(中文(简体) ) |
子路径
| 子路径 | 出口 | 目的 |
|---|---|---|
./operators | filterEvent | RxJS 可管道运算符结束 event$ (也从包根再出) |
./utils | waitForEvent, (中文(简体) ), watchEvents | 在应用程序代码或测试中等待/收集已发送事件的普通助手 |