9
问题描述 支付宝小程序(Vue3.x),使用页面间事件通信通道,次页面无法监听到事件
复现步骤
- 新建空白Vue3项目,新建next页面;
- 复制以下代码至对应页面,保存并运行到【支付宝小程序开发者工具】;
- 点击indexPage按钮跳转至nextPage;在nextPage页面,eventChannel.once()监听。
// index
<template>
<button type="default" @click="_click">Button</button>
</template>
<script setup>
const _click = () => {
uni.navigateTo({ url: '/pages/next/next' })
.then(({ eventChannel }) => {
eventChannel.emit('acceptDataFromOpenerPage', { data: 'data from starter page' })
})
}
</script>
// next
<script setup>
import { getCurrentInstance } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
const { proxy } = getCurrentInstance()
onLoad(() => {
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
const eventChannel = proxy.getOpenerEventChannel()
eventChannel.on('acceptDataFromOpenerPage', data => {
console.log(data) // 控制台无输出
})
})
</script>
预期结果 点击按钮跳转至nextPage页,控制台可正常输出日志
实际结果
- 跳转至nextPage未输出日志;
- 同样代码运行至【微信小程序开发者工具】,跳转至nextPage正常输出日志;
- 【支付宝小程序开发者工具】新建工程,使用my.navigateTo({ url: '/pages/next/next' })跳转,eventChannel亦可输出日志。
系统信息:
- 发行平台::支付宝
- 操作系统:Android 12.0+
- HBuilderX版本:3.6.4 和 3.6.7 Beta
- 设备信息:meizuPro18,Mate 40Pro 等