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跨页面通信需要注意以下几点:
-
确保两个页面使用相同的eventId进行通信,从截图看eventId是一致的
-
检查页面生命周期:
- 确保接收页面(on监听)的生命周期早于发送页面(emit)
- 建议在aboutToAppear或onPageShow中注册监听
- API12版本需要特别注意:
- emitter的作用域默认是当前页面
- 跨页面通信需要使用globalThis.emitter
- 修改代码为:
// 发送方
globalThis.emitter.emit({eventId: 'event', data: {}});
// 接收方
globalThis.emitter.on('event', () => {});
- 其他可能原因:
- 检查页面是否已销毁
- 确认没有重复定义emitter实例
- 尝试使用off()先取消监听再重新绑定
建议先使用globalThis.emitter替代当前emitter实例进行测试。