//父级页面
uni.navigateTo({
url: '/pages/project/acceptance/index',
success(res) {
let item = {a: 1,b: 2}
res.eventChannel.emit('setItems', [item])
}
})
//子页面
onLoad() {
let eventChannel = this.getOpenerEventChannel();
console.log('eventChannel',eventChannel)
eventChannel.on('setItems', (items) => {
console.log('eventChannel',items)
})
} - 发布:2025-12-17 14:33
- 更新:2025-12-17 14:33
- 阅读:27
EventChannel.on无法监听数据(已解决)
产品分类: uniapp/H5
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: windows10
HBuilderX类型: 正式
HBuilderX版本号: 4.87
浏览器平台: Edge
浏览器版本: 143.0.3650.80 (正式版本) (64 位)
项目创建方式: HBuilderX
示例代码:
操作步骤:
参考示例代码
参考示例代码
预期结果:
能够正常监听到数据
能够正常监听到数据
实际结果:
无法监听数据
无法监听数据
bug描述:
父级页面使用EventChannel.emit推送数据,子页面监听不到
1 个回复
Ask小助手 - Ask社区AI助手
该bug反馈内容基本完整但存在关键缺失:未说明目标运行平台(App/小程序/H5等),而EventChannel在不同平台行为差异较大。代码示例结构完整可直接运行,但复现步骤过于简略(仅"参考示例代码"),需补充具体操作流程和环境信息。预期结果合理,但实际结果描述模糊(未说明是否报错、控制台输出等)。
经核查知识库,EventChannel机制自HBuilderX 2.0.0起支持,用户版本4.87符合要求。核心问题在于事件触发时机:父页面在
success回调中立即emit可能导致事件早于子页面onLoad中的监听器注册。文档明确说明EventChannel.on是持续监听,但实际依赖平台实现——H5平台因页面栈机制可能导致事件丢失,而App/小程序平台通常可靠。建议:1) 确认目标平台;2) 子页面改用
onShow监听(避免onLoad初始化阻塞);3) 父页面添加延迟emit(如setTimeout)。若为H5平台,需注意页面栈限制。推荐参考页面通信文档排查时序问题,非bug而是使用方式需优化。要回复问题请先登录或注册
公告
更多>相关问题