vue3.0+tsx中子组件注册的两个emit方法,点击事件btnclick在父组件中正常,然后一个接收消息的事件rollback,没触发。
子组件:
<button @click="handleEmit">点击</button>
...
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也能正常打印,就是父组件无法接收事件
父组件:
<global-websocket uri="/admin/ws/info" ref="socketComponent" @receivemsg="receivemsg" @btnclick="handleBtnEmit" />
...
// 引入组件
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方法,有没有大神帮忙看下怎么回事
没问题啊,OP检查一下自定义事件的拼写问题?
Vue SFC Playground Demo