广告
返回顶部
首页 > 资讯 > 精选 >vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题
  • 610
分享到

vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题

2023-07-05 17:07:23 610人浏览 独家记忆
摘要

今天小编给大家分享一下Vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文

今天小编给大家分享一下Vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    1.原因

    如果在 DOM 结构中的某个 DOM 节点使用了 v-ifv-show 或者 v-for(即根据获取到的后台数据来动态操作 DOM,即响应式),那么这些 DOM 是不会在 mounted 阶段找到的。

    mounted 阶段,一般是用于发起后端请求,获取数据,配合路由钩子做一些事情。简单来说就是在 mounted 钩子中加载数据而已,加载回来的数据是不会在这个阶段更新到 DOM 中的。

    所以在 mounted 钩子中使用 $refs,如果 ref 是定位在有 v-ifv-forv-show 的 DOM 节点中,返回来的只能是 undefined,因为在 mounted 阶段他们根本不存在。

    如果说 mounted 阶段是加载阶段,那么 updated 阶段则是完成了数据更新到 DOM 的阶段(对加载回来的数据进行处理),此时,再使用 this.$refs.xx,就 100% 能找到该 DOM 节点。

    updatedmounted 不同的是,在每一次的 DOM 结构更新,vue.js 都会调用一次 updated 钩子函数!而 mounted 钩子函数仅仅只执行一次而已。

    2.解决:使用$nextTick

    Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。

    $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM。

    vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题

    vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题

    3.动态绑定ref并使用v-for,使用this.$refs[refName]无法获取ref

    原因

    vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题

    解决

    将this.$refs[refName]改为this.$refs[refName][0]即可

    以上就是“vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题

    本文链接: https://www.lsjlt.com/news/353449.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题
      今天小编给大家分享一下vue怎么解决this.$refs.xx在mounted中获取DOM元素为undefined问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文...
      99+
      2023-07-05
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作