从 vue3 中的 v-on 事件处理程序访问元素

问题描述

在 vue 中,我经常需要访问组件的元素。例如这里在 element-plus 中,确保焦点被移除:

<el-button ref="btnLanza" @mouseleave="$refs.btnLanza.$el.blur()" @click="runLanza" round>Lanzar</el-button> 

在其他框架中,类似 on-mouseleave="this.blur()" 的东西就足够了,但在 vue this 中没有指向元素,所以我需要定义一个 ref 然后遍历 $refs ,只为这个小任务。

是否有替代 $this 来访问捕获事件的组件而不是定义模板的组件?

解决方法

尝试使用内联函数并使用目标模糊方法而不定义引用:

@mouseleave="($event)=>$event.target.blur()" 

或者只是@mouseleave="$event.target.blur()"

它的灵感来自this