2***@qq.com
2***@qq.com
  • 发布:2024-03-20 17:34
  • 更新:2024-03-20 18:42
  • 阅读:85

【报Bug】vue3 setup语法下eventChannel失效(支付宝小程序异常,微信正常)

分类:uni-app

产品分类: uniapp/小程序/阿里

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows 11

HBuilderX类型: 正式

HBuilderX版本号: 4.04

第三方开发者工具版本号: 3.8.4

基础库版本号: 2.9.19

项目创建方式: HBuilderX

示例代码:
<script setup>  
    import {  
        getCurrentInstance,  
    } from 'vue'  
    import { onLoad } from '@dcloudio/uni-app';  
    const { proxy } = getCurrentInstance();  
    const eventChannel = proxy.getOpenerEventChannel()  
    console.log(eventChannel)  
    onLoad(async () => {  
        eventChannel.on('emitData', data => {  
            console.log(data)  
        })  
    })  
</script>  

上面这种写法就没有打印data  
下面vue2就正常  

export default {  
        data(){  
            return{}  
        },  
        onLoad() {  
            const eventChannel = this.getOpenerEventChannel()  
            eventChannel.on('emitData', data => {  
                console.log(data )  

            })  
        }  
    }  

操作步骤:

A页面添加跳转事件

                        linkTo(){  
                uni.navigateTo({  
                    url: '/pages/component/view/view',   
                    events:{  
                        detailsEmitRefresh: async () => {  
                            console.log('test')  
                        }  
                    },  
                    success: res => {  
                        console.log('emit', {a:1,b:2,c:3})  
                        res.eventChannel.emit('emitData', {a:1,b:2,c:3})  
                    }  
                })  
            },  

B页面

<script setup>  
    import {  
        getCurrentInstance,  
    } from 'vue'  
    import { onLoad } from '@dcloudio/uni-app';  
    const { proxy } = getCurrentInstance();  
    const eventChannel = proxy.getOpenerEventChannel()  
    console.log(eventChannel)  
    onLoad(async () => {  
        eventChannel.on('emitData', data => {  
            console.log(data)  
        })  
    })  
</script>  

上面这种写法就没有打印data  
下面vue2就正常  

export default {  
        data(){  
            return{}  
        },  
        onLoad() {  
            const eventChannel = this.getOpenerEventChannel()  
            eventChannel.on('emitData', data => {  
                console.log(data )  

            })  
        }  
    }  

预期结果:

vue2与vue3应该都正常

实际结果:

setup语法下channel on事件并不触发

bug描述:

2024-03-20 17:34 负责人:无 分享
已邀请:
zZZ1Ma

zZZ1Ma

const eventChannel = proxy.getOpenerEventChannel()放到onLoad里试下

要回复问题请先登录注册