UniApp Vue3事件适配与兼容方案

1. Vue2 与 Vue3 事件机制的核心区别

  • Vue2

    • 通过 this.$emit('event') 触发自定义事件,父组件用 @event 监听。

    • .native 修饰符用于监听原生 DOM 事件(如 @click.native)。

  • Vue3

    • 移除 .native,改为通过 emits 选项声明自定义事件。

    • 未声明的事件监听器 会作为原生事件绑定到组件的根元素(通过 $attrs),可能导致意外行为。


2. 不注册 emits 的影响

未声明的事件 会被当作原生事件处理,绑定到根元素。
问题示例

<!-- 子组件未声明 emits: ['click'] -->
<template>
  <button @click="$emit('click')">按钮</button>
</template>

<!-- 父组件 -->
<Child @click="handleClick" />

点击按钮会触发 两次 handleClick

  1. 子组件 $emit('click') 触发的自定义事件。

  2. 根元素的原生 click 事件(因未声明 emits@click 被绑定到根元素)。


3. 适配方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端 贾公子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值