欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年07月28日 15:08:57   作者:小杰90s  
這篇文章主要介紹了Vue 解決通過this.$refs來獲取DOM或者組件報錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1.關(guān)于this.$refs的使用場景

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

<p ref="p">hello</p>

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

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

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

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

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

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

因?yàn)閞ef本身是作為渲染結(jié)果被創(chuàng)建的,在渲染的時候是不能訪問的,因?yàn)樗麄冞€不存在!

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

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

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

//6.14更新

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

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

來得到數(shù)據(jù)

ref

本身作為渲染結(jié)果被創(chuàng)建,在初始渲染的時候不能訪問他們,是不存在的

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

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

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

1、你在哪里調(diào)用,和你調(diào)用的對象

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

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

2、調(diào)用對象是不是數(shù)組列表

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

后來才發(fā)現(xiàn),this.$refs.name是一個數(shù)組,無法通過 .style 獲取樣式,

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

// 6.14 更新,這個說法有點(diǎn)問題

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

3、調(diào)用對象是否和v-if結(jié)合使用

ref不是響應(yīng)式的,所有的動態(tài)加載的模板更新它都無法相應(yīng)的變化。

最后

在使用中,我發(fā)現(xiàn)$refs.style只能設(shè)置該對象的樣式,獲取出來的值都是空的

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

相關(guān)文章

  • uniapp?vue與nvue輪播圖之輪播圖組件的示例代碼

    uniapp?vue與nvue輪播圖之輪播圖組件的示例代碼

    這篇文章主要介紹了uniapp?vue與nvue輪播圖輪播圖組件的實(shí)例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 多個vue子路由文件自動化合并的方法

    多個vue子路由文件自動化合并的方法

    這篇文章主要給大家介紹了關(guān)于多個vue子路由文件自動化合并的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue使用vue-drag-resize生成懸浮拖拽小球

    Vue使用vue-drag-resize生成懸浮拖拽小球

    這篇文章主要為大家詳細(xì)介紹了Vue使用vue-drag-resize生成懸浮拖拽小球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue3如何使用element-plus的dialog

    vue3如何使用element-plus的dialog

    這篇文章主要介紹了vue3優(yōu)雅的使用element-plus的dialog,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 關(guān)于VanCascader默認(rèn)值(地址code轉(zhuǎn)換)

    關(guān)于VanCascader默認(rèn)值(地址code轉(zhuǎn)換)

    這篇文章主要介紹了關(guān)于VanCascader默認(rèn)值(地址code轉(zhuǎn)換),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 基于vue3&element-plus的暗黑模式實(shí)例詳解

    基于vue3&element-plus的暗黑模式實(shí)例詳解

    實(shí)現(xiàn)暗黑主題的方式有很多種,也有很多成型的框架可以直接使用,下面這篇文章主要給大家介紹了關(guān)于基于vue3&element-plus的暗黑模式的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Vue中video標(biāo)簽如何實(shí)現(xiàn)不靜音自動播放

    Vue中video標(biāo)簽如何實(shí)現(xiàn)不靜音自動播放

    最近在做大屏展示需要在一開始播放引導(dǎo)視頻,產(chǎn)生自動播放需求,下面這篇文章主要給大家介紹了關(guān)于Vue中video標(biāo)簽如何實(shí)現(xiàn)不靜音自動播放的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 詳解element ui 添加自定義方法

    詳解element ui 添加自定義方法

    今天在修改 el-table 源碼過程中遇到一個頭大的問題,原本修改編譯后,將 element的子目錄lib下的文件復(fù)制到項(xiàng)目的響應(yīng)目錄里就可以了,但是這次總出問題,下面小編給大家分享element ui 添加自定義方法,感興趣的朋友一起看看吧
    2024-02-02
  • vue+iview如何實(shí)現(xiàn)拼音、首字母、漢字模糊搜索

    vue+iview如何實(shí)現(xiàn)拼音、首字母、漢字模糊搜索

    這篇文章主要介紹了vue+iview如何實(shí)現(xiàn)拼音、首字母、漢字模糊搜索,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue 2.0 購物車小球拋物線的示例代碼

    vue 2.0 購物車小球拋物線的示例代碼

    本篇文章主要介紹了vue 2.0 購物車小球拋物線的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論