vue3使用ref獲取dom結(jié)果為'null'的原因詳析
在vue2中,我們使用ref獲取dom元素時是這樣子的:
// 父組件
<template>
<div>
<button @click=handleClick>我裝載了一個子組件!</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元素時是這樣子的:
// 父組件
<template>
<button @click=handleClick>我裝載了一個子組件!</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>下面來說說vue3中獲取dom為空的原因:
1.setup的return中應(yīng)該拋出ref封裝的字段,否則ref的值只是定義了并不能響應(yīng)式使用,事實上,所有ref或者reactive定義的值都應(yīng)在return中拋出。
2.直接在setup()中打印。這就是生命周期的問題了,setup本質(zhì)上相當于vue2中的created,在創(chuàng)建階段,dom元素還未完全創(chuàng)建完成,此時獲取dom自然為null了。上面的例子中我是在點擊按鈕中觸發(fā)的,此時早已經(jīng)過創(chuàng)建階段,如果你想更早,可以手動定義onMented去打印,如下:
import {ref,onMented} from 'vue'
export default {
setup(){
const dataList=ref(null)
onMented(()=>{
console.log(dataList.value) //像這樣!
})
return{
dataList
}
}
}3.如果你在使用時出現(xiàn)ref.value取不到子組件里的值,或者報錯ref.value對象為空的情況,那是因為子組件要把能夠被負組件調(diào)用的方法暴露出來,在子組件里加上defineExpose就可以啦。
defineExpose({
onOpen //這是你要調(diào)用的方法名
});總結(jié)
到此這篇關(guān)于vue3使用ref獲取dom結(jié)果為'null'的原因詳析的文章就介紹到這了,更多相關(guān)vue3 ref獲取dom結(jié)果為null內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3訪問頁面時自動獲取數(shù)據(jù)的方法實現(xiàn)
本文介紹了在Vue3中如何利用生命周期鉤子函數(shù)和定時器實現(xiàn)訪問頁面時自動獲取數(shù)據(jù)的方法,這種方法適用于需要在頁面加載時即時更新數(shù)據(jù)顯示的場景,感興趣的可以了解一下2024-11-11
仿照Element-ui實現(xiàn)一個簡易的$message方法
這篇文章主要介紹了仿照Element-ui實現(xiàn)一個簡易的$message方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Vue3?PDF預(yù)覽組件設(shè)計與實現(xiàn)方法分析
隨著互聯(lián)網(wǎng)的發(fā)展,PDF文件在信息交流和文檔分享中起著重要的作用,通過在Vue組件中實現(xiàn)PDF預(yù)覽功能,我們可以為用戶提供便捷的內(nèi)容閱讀體驗,這篇文章主要介紹了Vue3?PDF預(yù)覽組件設(shè)計與實現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2026-03-03
關(guān)于vuepress部署出現(xiàn)樣式的問題及解決
這篇文章主要介紹了關(guān)于vuepress部署出現(xiàn)樣式的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue部署項目到阿里云云服務(wù)器的實現(xiàn)步驟
本文主要介紹了部署 Vue 項目到阿里云云服務(wù)器,將文件上傳到服務(wù)器,使用Nginx作為Web服務(wù)器提供服務(wù),配置Nginx以支持前端路由,感興趣的可以了解一下2025-12-12

