美文网首页
Vue.js 使用 $refs 定位 DOM 出现 undefi

Vue.js 使用 $refs 定位 DOM 出现 undefi

作者: 与蟒唯舞 | 来源:发表于2018-01-11 13:34 被阅读5673次

    使用 ref 来定位 DOM 节点很方便。但是期间遇到了一个问题,就是在生命周期 mounted 钩子函数里面使用 this.$refs.xx,打印出来的却是 undefined

    如果在 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 钩子函数仅仅只执行一次而已。

    详细参见文档内容:

    updated ref

    相关文章

      网友评论

          本文标题:Vue.js 使用 $refs 定位 DOM 出现 undefi

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