HarmonyOS鸿蒙Next中emitter两个页面通讯时on事件无法监听到另一个页面触发的emit API12

HarmonyOS鸿蒙Next中emitter两个页面通讯时on事件无法监听到另一个页面触发的emit API12

第一个页面绑定事件

第二个页面触发事件

点击触发事件不会打印任何东西 API12的版本

4 回复

楼主你好,我这边用真机验证过,通过emitter,一个页面监听事件,一个页面触发事件,是可以收到消息的,应该还是previewer的限制

更多关于HarmonyOS鸿蒙Next中emitter两个页面通讯时on事件无法监听到另一个页面触发的emit API12的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我记得api9的时候,我是页面变回前台以后,他会开始处理监听

在HarmonyOS鸿蒙Next中,emitter用于页面间通信。若on事件无法监听到另一个页面触发的emit,可能原因包括:1. 事件名称不匹配;2. 页面生命周期问题,on事件未在emit触发前注册;3. 页面未正确订阅或发布事件。确保事件名称一致,并在页面生命周期合适时机注册监听器。

在HarmonyOS Next中,emitter跨页面通信需要注意以下几点:

  1. 确保两个页面使用相同的eventId进行通信,从截图看eventId是一致的

  2. 检查页面生命周期:

  • 确保接收页面(on监听)的生命周期早于发送页面(emit)
  • 建议在aboutToAppear或onPageShow中注册监听
  1. API12版本需要特别注意:
  • emitter的作用域默认是当前页面
  • 跨页面通信需要使用globalThis.emitter
  • 修改代码为:
// 发送方
globalThis.emitter.emit({eventId: 'event', data: {}});

// 接收方 
globalThis.emitter.on('event', () => {});
  1. 其他可能原因:
  • 检查页面是否已销毁
  • 确认没有重复定义emitter实例
  • 尝试使用off()先取消监听再重新绑定

建议先使用globalThis.emitter替代当前emitter实例进行测试。

回到顶部