Vue通过ref获取不到$refs问题

 更新时间:2023年01月23日 11:31:23   作者:吃~货  
这篇文章主要介绍了Vue通过ref获取不到$refs问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Vue通过ref获取不到$refs

今天写项目时发现一个问题,就是明明已经定义了ref,但通过$refs打印却没有打印出想要的结果。

代码如下

<!-- html部分 -->
<div ref="myOrder" v-if="isOrder"></div>

// js部分
init () {
    console.log(this.$refs.myOrder) //undefined
}

打印结果是undefined。

后来查阅资料后发现问题所在:ref所在的标签不要用v-if,使用v-show就好了。并且ref的父级标签也不要用v-if。能用v-show就用v-show。否则就会出现打印$refs时,值为undefined

使用$refs获取不到DOM元素

this.$refs.xx 为 undefined 的几种情况:

1. 在created 钩子函数中调用

create()在实例创建完成后被立即调用。这时,实例已完成数据观测、属性和方法的元素,watch/event事件回调。但是,挂载阶段还没有开始,所以this.$refs获取不到DOM。

2. 获取的是设置了v-if/v-show的元素

如果在DOM结构中的某个DOM节点使用了v-if、v-show或v-for(根据后台数据动态操作DOM),那么这些DOM 在mounted阶段是不存在的。

在mounted钩子中加载回来的数据不会在这个阶段更新到DOM中。所以在mounted钩子中使用$refs获取有v-if、v-for、v-show 的DOM节点,返回来的会是undefined。

解决:

1.不在munted中获取元素,在updated中获取。

2.使用$nextTick:

  • $nextTick是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用$nextTick,则可以在回调中获取更新后的DOM。
if(){// 随便举栗子
    this.a = true;// 修改数据
    this.$nextTick(function () {// 调用$nextTick函数
        let dom1 = this.$refs.test;// o了
    })
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue简单实现原理详解

    Vue简单实现原理详解

    这篇文章主要介绍了Vue简单实现原理,结合实例形式详细分析了Vue实现原理与操作注意事项,需要的朋友可以参考下
    2020-05-05
  • vue中的面包屑导航组件实例代码

    vue中的面包屑导航组件实例代码

    这篇文章主要介绍了vue的面包屑导航组件,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Vue中添加手机验证码组件功能操作方法

    Vue中添加手机验证码组件功能操作方法

    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。这篇文章主要介绍了VUE 中添加手机验证码组件,需要的朋友可以参考下
    2017-12-12
  • vue-resource 拦截器(interceptor)的使用详解

    vue-resource 拦截器(interceptor)的使用详解

    本篇文章主要介绍了vue-resource 拦截器(interceptor)的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Vue 指令实现按钮级别权限管理功能

    Vue 指令实现按钮级别权限管理功能

    这篇文章主要介绍了Vue 指令实现按钮级别权限管理功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Fragment 占位组件不生成标签与路由组件lazyLoad案例

    Fragment 占位组件不生成标签与路由组件lazyLoad案例

    这篇文章主要为大家介绍了Fragment 占位组件不生成标签与路由组件lazyLoad案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Vue组件之自定义事件的功能图解

    Vue组件之自定义事件的功能图解

    本文通过图文并茂的形式给大家介绍了Vue组件之自定义事件的功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 动态Axios的配置步骤详解

    动态Axios的配置步骤详解

    这篇文章主要给大家分享介绍了关于动态Axios的配置步骤,文中通过示例代码介绍的非常详细,通过这个教程大家可以很方便的实现动态Axios的配置,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-01-01
  • vue2项目如何将webpack迁移为vite并使用svg解决所有bug问题

    vue2项目如何将webpack迁移为vite并使用svg解决所有bug问题

    这篇文章主要介绍了vue2项目如何将webpack迁移为vite并使用svg解决所有bug问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 浅谈element的$notify注意点

    浅谈element的$notify注意点

    本文主要介绍了element的$notify注意点,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论