HarmonyOS 鸿蒙Next emitter.on回调里接收的数据为空

发布于 1周前 作者 yuanlaile 来自 鸿蒙OS

HarmonyOS 鸿蒙Next emitter.on回调里接收的数据为空

2 回复
import { emitter } from '@kit.BasicServicesKit';

@Entry
@Component
struct EmitterTest {
  aboutToAppear(): void {
    emitter.on("EmitterTest", (eventData: emitter.EventData) => {
      let eventDataMap = eventData.data?.eventDataMap as Map<string, Object>
      console.info('EmitterTest callback, eventData:' + eventDataMap.get('1'));
      console.info('EmitterTest callback, eventData:' + eventDataMap.get('2'));
    });
  }

  build() {
    RelativeContainer() {
      Button('sned emitter', { stateEffect: true, type: ButtonType.Capsule })
        .width('80%')
        .height(40)
        .margin(10)
        .onClick(() => {
          let eventDataMap = new Map<string, Object>()
          eventDataMap.set("1", "111")
          eventDataMap.set("2", "222")
          let eventData: emitter.EventData = {
            data: { eventDataMap }
          };
          let options: emitter.Options = {
            priority: emitter.EventPriority.LOW
          };

          emitter.emit("EmitterTest", options, eventData);
        })
    }
    .height('100%')
    .width('100%')
  }
}

针对您提到的HarmonyOS(鸿蒙)系统中Next emitter.on回调接收数据为空的问题,这通常可能由以下几个原因引起:

  1. 数据源问题:首先确认数据源是否已正确发送数据。检查数据源的emit调用是否传递了正确的参数,并且这些参数在调用时确实不为空。

  2. 事件订阅问题:确认您订阅的事件类型与数据源触发的事件类型是否一致。不匹配的事件类型可能导致回调无法接收到预期的数据。

  3. 数据传递问题:在事件传递过程中,可能存在数据丢失或未正确传递的情况。检查事件传递链中的每个环节,确保数据在传递过程中保持完整。

  4. 回调实现问题:检查回调函数的实现,确保在接收数据时正确处理了数据。如果回调函数内部有逻辑错误,也可能导致看似数据为空的情况。

  5. 系统或环境问题:在某些情况下,系统或环境问题(如内存不足、线程冲突等)也可能导致数据传递异常。

建议从上述几个方面逐一排查问题。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html ,他们将提供更专业的技术支持。

回到顶部