Vue3迁移遇v-on.native修饰符报错:该修饰符仅适用于组件
解决Vue3迁移中
.native修饰符在原生标签上的报错问题 这个报错的核心原因是Vue3对.native修饰符的使用规则做了严格限制:它只能用于自定义组件,用来监听组件的原生DOM事件,而原生HTML标签(比如<a>)本身就可以直接绑定原生事件,不需要额外加.native修饰符。
修复方法很简单,直接移除事件绑定上的.native即可:
原Vue2报错代码:
<a v-on:click.native="handleLinkClick">跳转链接</a> <!-- 或简写语法 --> <a @click.native="handleLinkClick">跳转链接</a>
修改后的Vue3代码:
<a @click="handleLinkClick">跳转链接</a>
如果是针对自定义组件需要监听原生事件的场景(比如你之前在Vue2里给自定义组件加.native),Vue3里的替代方案是:
- 在自定义组件内部,通过
$emit把原生事件转发出去; - 或者使用
v-on="$attrs"来继承父组件绑定的事件(Vue3中$listeners已被合并到$attrs中)。
内容的提问来源于stack exchange,提问作者Mr.DCPM
相关产品推荐
相关产品推荐

