Vue.js 使用 $refs 定位 DOM 出現(xiàn) undefined

使用 ref 來定位 DOM 節(jié)點很方便。但是期間遇到了一個問題,就是在生命周期 mounted 鉤子函數(shù)里面使用 this.$refs.xx,打印出來的卻是 undefined

如果在 DOM 結構中的某個 DOM 節(jié)點使用了 v-if、v-show 或者 v-for(即根據獲取到的后臺數(shù)據來動態(tài)操作 DOM,即響應式),那么這些 DOM 是不會在 mounted 階段找到的。

mounted 階段,一般是用于發(fā)起后端請求,獲取數(shù)據,配合路由鉤子做一些事情。簡單來說就是在 mounted 鉤子中加載數(shù)據而已,加載回來的數(shù)據是不會在這個階段更新到 DOM 中的。所以在 mounted 鉤子中使用 $refs,如果 ref 是定位在有 v-if、v-for、v-show 的 DOM 節(jié)點中,返回來的只能是 undefined,因為在 mounted 階段他們根本不存在!??!

如果說 mounted 階段是加載階段,那么 updated 階段則是完成了數(shù)據更新到 DOM 的階段(對加載回來的數(shù)據進行處理),此時,再使用 this.$refs.xx,就 100% 能找到該 DOM 節(jié)點。

updatedmounted 不同的是,在每一次的 DOM 結構更新,Vue.js 都會調用一次 updated 鉤子函數(shù)!而 mounted 鉤子函數(shù)僅僅只執(zhí)行一次而已。

詳細參見文檔內容:

updated
ref
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容