鸿蒙Next中emitter.emit的使用方法是什么

在鸿蒙Next中,如何使用emitter.emit发送事件?能否提供一个具体的使用示例,包括参数传递和事件监听的完整代码?另外,emitter.emit是否支持跨线程或跨组件通信?

2 回复

在鸿蒙Next中,emitter.emit用于发送自定义事件,基本用法如下:

  1. 定义事件:在Event对象中声明事件名,如:

    const event: Event = {
      eventId: 1, // 事件ID
    };
    
  2. 发送事件

    emitter.emit(event, data); // data为可选参数
    
  3. 示例场景:点击按钮发送事件

    // 定义事件
    const BUTTON_CLICK: Event = { eventId: 1 };
    
    // 发送事件(可携带数据)
    emitter.emit(BUTTON_CLICK, { message: "按钮被点了" });
    

注意

  • 需提前通过emitter.on()订阅事件才能接收
  • 事件ID需唯一
  • 数据对象需匹配订阅时的类型

简单来说就是:定义事件 → 用emit发送 → 其他地方用on接收。

更多关于鸿蒙Next中emitter.emit的使用方法是什么的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,emitter.emit 用于发布自定义事件,通常与 emitter.on 配合使用,实现组件间的通信。以下是基本使用方法:

1. 导入模块

import emitter from '@ohos.events.emitter';

2. 定义事件

使用 emitter.emit 发布事件,需指定事件ID和传递的数据:

// 定义事件对象
let eventData = {
  data: { key: "value" } // 自定义数据
};

// 发布事件
emitter.emit({
  eventId: 1, // 事件ID(需唯一)
}, eventData);

3. 完整示例

以下为发布和监听事件的完整代码:

import emitter from '@ohos.events.emitter';

// 监听事件(在接收方组件)
emitter.on({
  eventId: 1 // 与emit的事件ID一致
}, (eventData) => {
  console.info('收到事件数据: ' + JSON.stringify(eventData.data));
});

// 发布事件(在发送方组件)
let eventData = {
  data: { message: "Hello, HarmonyOS!" }
};
emitter.emit({
  eventId: 1,
}, eventData);

4. 注意事项

  • 事件ID唯一性:确保 eventId 在应用内唯一,避免冲突。
  • 生命周期管理:使用 emitter.off 及时移除监听,防止内存泄漏。
  • 数据格式:通过 eventData.data 传递对象,支持复杂数据类型。

通过以上步骤,即可实现跨组件或跨页面的轻量级通信。

回到顶部