Vue3 + ts 子组件 emit 方法在父组件中未触发,如何解决?-灵析社区

世界唯一的

vue3.0+tsx中子组件注册的两个emit方法,点击事件btnclick在父组件中正常,然后一个接收消息的事件rollback,没触发。 子组件: 点击 ... const emit = defineEmits(['receivemsg', 'btnclick']); ... //正常触发 const handleEmit = () => { emit('btnclick', '111') }; //接收socket消息 const onMessage = (msgEvent: any) => { //收到服务器信息,心跳重置并发送 startHeartbeat(); const msg = msgEvent.data; if (msg.indexOf('pong') > 0) { return; } ElNotification.warning({ title: '消息提醒', dangerouslyUseHTMLString: true, message: `您有一条来自${JSON.parse(msg).data.name}的新消息,请及时处理`, offset: 60, }); emit('receivemsg', msg); }; 接收socket消息是正常的,msg也能正常打印,就是父组件无法接收事件 父组件: ... // 引入组件 const GlobalWebsocket = defineAsyncComponent(() => import('/@/components/Websocket/index.vue')); const socketComponent = ref(); //子组件的emit方法 这个正常 const handleBtnEmit = (data: any) => { console.log(111, data); }; //这个没打印 const receivemsg = (data: any) => { console.log(111, data); }; 父组件没触发rollback方法,有没有大神帮忙看下怎么回事

阅读量:148

点赞量:0

问AI
没问题啊,OP检查一下自定义事件的拼写问题? "Vue SFC Playground Demo" (https://link.segmentfault.com/?enc=oIODUNXdZjK5CjbYlvvT%2FA%3D%3D.9QVy1v5KizeppUSxry%2FW1mnlz0VcLyy64mOtrZnShxRbPNuNugq7xXmCGc6Dg%2B8hGCTJOjhKIeS%2BrnZrgBR61U%2Bjt%2FxkLeCqPA%2FyXTJX8OEpHl81WzHqzCKHQHZm%2F4%2B%2FHMuZbuC5m4g2Zu0lRxqgVNgWwl%2BeEtFkPOL5Bq%2B%2FiyHmtEnzTf6JOPuGUI8YFd8IKLJCezOe%2B2NVNBwutq1uwKOVi%2FQn3WTSbNDRZIJAmVjAeFfCVucOmzuzo4fRtQMcNWIf3vbxzD2gIcVXVFFZjCmJB3tnJdkXzr4dTVLkXi7DpB9HEqT2wkkOwWNXFt0QZWDj98%2B0gFymXBTAVIurWrFGeqlyG%2FO5NhW3nM0uMJpTWrHsOgG%2FPSIUoXIN90TletFXiTGhAYQ6jbbuhe0z26xjaFIqukz1IfyroO3AsMVQxbxy7jwDzd1uFvB9YOqfz6mEof8sm9jnzFfFsj0ZH5m%2FtZ82A6TfNp1BNnAsALL388ET4RMurPXBuCjd4VJg6lh6QLiUj3ejAMob4cadwC%2BboQ0CSqttx413ToLemsoerk2iSnzt8oU9DCwq2eYgziURi9azrvF4R6Pl6Yk0L%2B%2FF%2BBYwpanuuNpZ1YmBC%2F5Jx3Ym2vOdd2oiItho%2BWB1H4yGo%2Bt9Dkl7Loji0v7cGGXtg8O02YXw7IE1ZgeEv6cBuTWw0OUUvm2VGj46kFD9zvjEt4Is6vgsw%2BOHw1%2FKuWFFdVxFi83iYixV2JkAZ6oz2JbIzqWMZlroesBf2F121nnh%2Fji6nurEHYJBylhh6QKrlfjlc69b4WTxC76TB3cEZYCZmmizukqCoZLfrKp0uwXDRy3Y68g0GJl%2FWtBVm%2Bl0mWcfCsnbhR585bBNA9c%3D) import Comp from './Comp.vue' const handleBtnEmit = (data) => { console.log("App.handleBtnEmit", data); }; const handleRollback = (data) => { console.log("App.handleRollback", data); }; const emit = defineEmits(['rollback', 'btnclick']); const handleBtnclick = () => { emit('btnclick', new Date().valueOf()) }; const handleRollback = () => { emit('rollback', new Date().valueOf()) } setInterval(() => { handleRollback() }, 1 * 1000) 点击