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

vue3使用ref獲取dom結(jié)果為'null'的原因詳析

 更新時(shí)間:2023年07月20日 16:10:17   作者:進(jìn)擊的potato  
這篇文章主要給大家介紹了關(guān)于vue3使用ref獲取dom結(jié)果為'null'的原因詳析,ref是Vue3中一個(gè)非常重要的功能,它可以用來(lái)獲取DOM節(jié)點(diǎn),從而實(shí)現(xiàn)對(duì)DOM節(jié)點(diǎn)的操作,需要的朋友可以參考下

在vue2中,我們使用ref獲取dom元素時(shí)是這樣子的:

// 父組件
<template>
  <div>
    <button @click=handleClick>我裝載了一個(gè)子組件!</button>
    <son ref="dataList"></son>
  </div>
</template>
<script>
import son from './data.vue'
export default {
  components: {
    son
  },
  methods:{
    handleClick(){
      console.log(this.$refs.dataList)  //像這樣!
    }
  }
}
</script>

在vue3中,我們使用ref獲取dom元素時(shí)是這樣子的:

// 父組件
<template>
  <button @click=handleClick>我裝載了一個(gè)子組件!</button>
  <son ref="dataList"></son>
</template>
<script>
import {ref} from 'vue'
import son from './data.vue'
export default {
  setup(){
    const dataList=ref(null)
    const handleClick=()=>{
      console.log(dataList.value)  //像這樣!
    }
    return{
      dataList //這里要拋出響應(yīng)式數(shù)據(jù)才可使用。
    } 
  }
}
</script>

下面來(lái)說(shuō)說(shuō)vue3中獲取dom為空的原因:

1.setup的return中應(yīng)該拋出ref封裝的字段,否則ref的值只是定義了并不能響應(yīng)式使用,事實(shí)上,所有ref或者reactive定義的值都應(yīng)在return中拋出。

2.直接在setup()中打印。這就是生命周期的問(wèn)題了,setup本質(zhì)上相當(dāng)于vue2中的created,在創(chuàng)建階段,dom元素還未完全創(chuàng)建完成,此時(shí)獲取dom自然為null了。上面的例子中我是在點(diǎn)擊按鈕中觸發(fā)的,此時(shí)早已經(jīng)過(guò)創(chuàng)建階段,如果你想更早,可以手動(dòng)定義onMented去打印,如下:

import {ref,onMented} from 'vue'
export default {
  setup(){
    const dataList=ref(null)
    onMented(()=>{
      console.log(dataList.value)  //像這樣!
    })
    return{
      dataList 
    } 
  }
}

3.如果你在使用時(shí)出現(xiàn)ref.value取不到子組件里的值,或者報(bào)錯(cuò)ref.value對(duì)象為空的情況,那是因?yàn)樽咏M件要把能夠被負(fù)組件調(diào)用的方法暴露出來(lái),在子組件里加上defineExpose就可以啦。

defineExpose({
  onOpen  //這是你要調(diào)用的方法名
});

總結(jié)

到此這篇關(guān)于vue3使用ref獲取dom結(jié)果為'null'的原因詳析的文章就介紹到這了,更多相關(guān)vue3 ref獲取dom結(jié)果為null內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3中進(jìn)行二維碼的生成與解碼實(shí)現(xiàn)詳解

    Vue3中進(jìn)行二維碼的生成與解碼實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了Vue3中進(jìn)行二維碼的生成與解碼實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 在vue中使用Echarts畫(huà)曲線圖的示例

    在vue中使用Echarts畫(huà)曲線圖的示例

    這篇文章主要介紹了在vue中使用Echarts畫(huà)曲線圖的示例,幫助大家在vue中繪制圖表,感興趣的朋友可以了解下
    2020-10-10
  • vue 中幾種傳值方法(3種)

    vue 中幾種傳值方法(3種)

    這篇文章主要介紹了vue 中幾種傳值方法(3種),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • vue 子組件和父組件傳值的示例

    vue 子組件和父組件傳值的示例

    這篇文章主要介紹了vue 子組件和父組件傳值的示例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下
    2020-09-09
  • ElementUI中<el-form>標(biāo)簽中ref、:model、:rules的作用淺析

    ElementUI中<el-form>標(biāo)簽中ref、:model、:rules的作用淺析

    Element官方文檔中寫(xiě)到,model是表單數(shù)據(jù)對(duì)象,rules是表單驗(yàn)證規(guī)則,下面這篇文章主要給大家介紹了關(guān)于ElementUI中<el-form>標(biāo)簽中ref、:model、:rules作用的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • vue cli構(gòu)建的項(xiàng)目中請(qǐng)求代理與項(xiàng)目打包問(wèn)題

    vue cli構(gòu)建的項(xiàng)目中請(qǐng)求代理與項(xiàng)目打包問(wèn)題

    這篇文章主要介紹了vue cli構(gòu)建的項(xiàng)目中請(qǐng)求代理與項(xiàng)目打包問(wèn)題,需要的朋友可以參考下
    2018-02-02
  • 解讀Vue3中keep-alive和動(dòng)態(tài)組件的實(shí)現(xiàn)邏輯

    解讀Vue3中keep-alive和動(dòng)態(tài)組件的實(shí)現(xiàn)邏輯

    這篇文章主要介紹了Vue3中keep-alive和動(dòng)態(tài)組件的實(shí)現(xiàn)邏輯,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue3?自定義指令控制按鈕權(quán)限的操作代碼

    vue3?自定義指令控制按鈕權(quán)限的操作代碼

    這篇文章主要介紹了vue3?自定義指令控制按鈕權(quán)限,為了提高用戶體驗(yàn),當(dāng)該按鈕無(wú)權(quán)使用時(shí),使用el-tooltip功能進(jìn)行提醒,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 基于VUE.JS的移動(dòng)端框架Mint UI的使用

    基于VUE.JS的移動(dòng)端框架Mint UI的使用

    本篇文章主要介紹了基于VUE.JS的移動(dòng)端框架Mint UI的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 深入解析Vue的自定義指令

    深入解析Vue的自定義指令

    這篇文章主要介紹了深入解析Vue的自定義指令,自定義指令主要是為了重用涉及普通元素的底層 DOM 訪問(wèn)的邏輯,一個(gè)自定義指令由一個(gè)包含類似組件生命周期鉤子的對(duì)象來(lái)定義,需要的朋友可以參考下
    2023-05-05

最新評(píng)論