美文网首页
Vue中this.$ref获取不到DOM对象的问题解决

Vue中this.$ref获取不到DOM对象的问题解决

作者: 周星星的学习笔记 | 来源:发表于2021-03-17 14:46 被阅读0次

一、问题描述

1.描述

今天在做这个功能的时候(双击某个div标签,出现input编辑框并且让input框获取焦点)发现使用this.$ref始终获取不到DOM对象,导致调用focus()方法一直不成功。

2.模板代码

#模板代码
<div @dblclick="showEdit">双击点我</div>
#使用ant design vue 中的a-input组件
<a-input v-if="isShowInput" ref="input"></a-input>

3.方法代码

#方法代码
//显示编辑流程分类的操作面板
showEdit() {
      this.isShowInput = true;
      this.$refs.input.focus();
}

二、解决方案

1.方法代码调整

showEdit() {
      this.isShowInput = true;
      ##改成使用 this.$nextTick执行
      this.$nextTick(() => {
         this.$refs.input.focus();
      });
}

2.原因

我猜测应该是由于input使用了v-if,在动态设置显示之后,DOM还没来得及渲染出来,就使用this.$ref来获取DOM,可能获取不到,使用this.$nextTick相当于进行了延时,等到了DOM完全渲染成功之后就能获取到了。

三、效果

效果

相关文章

网友评论

      本文标题:Vue中this.$ref获取不到DOM对象的问题解决

      本文链接:https://www.haomeiwen.com/subject/qmxecltx.html