国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Vue 解決通過this.$refs來獲取DOM或者組件報錯問題

瀏覽:30日期:2022-12-25 08:03:07

1.關于this.$refs的使用場景

如果ref屬性加在普通元素上,那么this.$refs.name則指向該DOM元素

<p ref='p'>hello</p>

<!-- this.$refs.p 指向該DOM元素 -->

如果ref屬性加在組件上,那么this.$refs.name指向該組件實例

<child-component ref='child'></child-component>

<!-- this.$refs.child 指向該組件 -->

2.為什么有時候通過this.$refs.name來獲取會報錯?

一個比較常見的場景:在一個彈窗打開的時候立刻通過this.$refs來獲取內容就會出現xxx is undefined的錯誤

因為ref本身是作為渲染結果被創建的,在渲染的時候是不能訪問的,因為他們還不存在!

如果此時代碼是需要這樣來寫代碼,那么你可以在DOM渲染完畢后再進行獲取

this.$nextTick(() => { this.$refs.name... //DOM渲染完畢后就能正常獲取了})

補充知識:vue ref用法(this.$refs獲取為空)

//6.14更新

但是有個辦法,我們可以使用

this.$nextTick(() => { // todo}) setTimeout(() => { // todo}, 0)

來得到數據

ref

本身作為渲染結果被創建,在初始渲染的時候不能訪問他們,是不存在的

$refs不是響應式的,只在組件渲染完成后才填充

用于元素或子組件注冊引用信息,注冊完成,將會注冊在父組件$refs對象上

如果你獲取到的總是空的,你注意一下:

1、你在哪里調用,和你調用的對象

試試在mounted()里面調用有效果沒有

調用的對象是本來就存在的,還是需要數據渲染之后才會出現的,同理,在mounted()里面調用看看

2、調用對象是不是數組列表

我一開始設置ref在v-for列表上,直接獲取this.$refs.name.style,永遠是空的,

后來才發現,this.$refs.name是一個數組,無法通過 .style 獲取樣式,

只能遍歷這個this.$refs.name數組,在this.$refs.name[index]上設置樣式

// 6.14 更新,這個說法有點問題

但是像高度寬度,可以通過offsetHeight,等來獲取。

3、調用對象是否和v-if結合使用

ref不是響應式的,所有的動態加載的模板更新它都無法相應的變化。

最后

在使用中,我發現$refs.style只能設置該對象的樣式,獲取出來的值都是空的

以上這篇Vue 解決通過this.$refs來獲取DOM或者組件報錯問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 特黄a三级三级三级 | 日韩一区二区视频在线观看 | 欧美视频在线观在线看 | 久久久久国产精品免费看 | 国模在线播放 | 日韩精品中文字幕在线观看 | 亚洲国产日韩欧美综合久久 | 欧美成人性动漫在线观看 | 国产成人精品一区 | 国产精品天堂avav在线 | 日本乱子伦xxxx | 久草中文在线 | 一区二区三区免费在线观看 | 亚洲一区二区三 | 亚洲三级黄色 | 亚州男人天堂 | 亚洲精品第一区二区在线 | 97se亚洲综合在线韩国专区福利 | 国产日韩欧美一区二区三区综合 | 欧美曰韩一区二区三区 | 俄罗斯一级黄色片 | 草草影院视频 | 一级视频在线观看 | 在线观看精品国内福利视频 | fc2在线播放 | 久久久精品久久久久三级 | 亚洲欧美国产中文 | 成年人黄色片 | 亚洲午夜国产精品 | 碰碰碰免费公开在线视频 | 另类专区 亚洲 | 日本三级香港三级人妇99 | 日韩免费高清一级毛片 | 久久免费网| 国产成人亚洲综合91精品555 | 日本午夜人成免费视频 | 欧美极品大肚孕妇孕交 | 牛牛本精品99久久精品88m | 免费高清毛片在线播放视频 | 欧美一级毛片免费观看视频 | 久久精品免费观看久久 |