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方法,有没有大神帮忙看下怎么回事
React代码如下, 前三次每次点击button都会打印不同的结果,苦思不得解,请大佬解惑。。 第一次点击button打印:click 1 2 第二次点击button打印:click 1 第三 ~ 第 N 次点击button打印:click function A() { console.log(2) return null } const App: React.FC = () => { const [flag, setFlag] = useState(false) console.log(1) return ( { console.log("click") setFlag(true) }} > click me ) } 如何解释第二次的打印结果呢??? 我原以为第二次点击button,只会打印click,依据是状态的newValue === prevValue,不会触发re-render,但是想不通为什么还打印了“1”。然后奇怪的是,第三次往后,又没有“1”了