国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3前端開發(fā),如何獲取組件內(nèi)dom對(duì)象以及子組件的屬性和方法

這篇具有很好參考價(jià)值的文章主要介紹了Vue3前端開發(fā),如何獲取組件內(nèi)dom對(duì)象以及子組件的屬性和方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Vue3前端開發(fā),借助Ref來(lái)獲取組件內(nèi)dom對(duì)象,借助defineExpose編譯宏可以獲取到子組件的屬性和方法。


<script setup>
import {onMounted, ref} from 'vue'
import Base from './components/Base.vue'
import SetupDemo from './components/SetupDemo.vue'
import ReactiveDemo from './components/ReactiveDemo.vue'
import ComputedDemo from './components/ComputedDemo.vue'
import WatchDemo from './components/WatchDemo.vue'
import MutationsDemo from './components/MutationsDemo.vue'
import WatchDemo2 from './components/WatchDemo2.vue'
import LifeDemo from './components/LifeDemo.vue'
import ImageDemo2 from './components/ImageDemo2.vue'
import Parent from './components/Parent.vue'
import Child from './components/Child.vue'
import TestCom from './components/TestCom.vue'

const priceRef = ref(null)
onMounted(()=>{
  console.log(priceRef.value);
})
</script>
<template>

  <h3>入口文件</h3>
  
<!-- 1-用ref函數(shù)來(lái)獲取組件內(nèi)的dom對(duì)象。 -->
<p ref="priceRef">車?yán)遄訂蝺r(jià):49</p>
<TestCom />
</template>


app入口文件,我們作為父組件,在里面調(diào)用了自定義組件TestCom.vue。

先做了一個(gè)測(cè)試,借助于ref來(lái)訪問(wèn)自身的dom對(duì)象。如圖所示是可以拿到的。

Vue3前端開發(fā),如何獲取組件內(nèi)dom對(duì)象以及子組件的屬性和方法,VUE3,前端,javascript,vue.js

ref又稱謂鉤子函數(shù),在vue2版本中,就是靠它來(lái)獲取dom對(duì)象的??梢圆榭次抑皩懙囊黄恼隆N恼氯肟诘刂罚骸緸槭裁磖ef稱作鉤子函數(shù)】。

傳統(tǒng)的vue2里面,我們?cè)L問(wèn)dom時(shí)的代碼,還是的借助于this對(duì)象的【this.$refs.userName】?,F(xiàn)在Vue3放棄了this對(duì)象。直接從源碼里結(jié)構(gòu)出來(lái)一個(gè)宏對(duì)象就行了【const priceRef = ref(null)】。

想獲取哪個(gè)dom,就給它身上綁定一個(gè)這樣的ref實(shí)例。


下面展示的是,借助于ref來(lái)訪問(wèn)子組件的實(shí)例對(duì)象。(聲明:默認(rèn)情況下,子組件內(nèi)部的屬性和方法,不會(huì)主動(dòng)對(duì)外暴漏的。想暴漏給別人訪問(wèn),需要借助于defineExpose)

<script setup>
import {onMounted, ref} from 'vue'
import Base from './components/Base.vue'
import SetupDemo from './components/SetupDemo.vue'
import ReactiveDemo from './components/ReactiveDemo.vue'
import ComputedDemo from './components/ComputedDemo.vue'
import WatchDemo from './components/WatchDemo.vue'
import MutationsDemo from './components/MutationsDemo.vue'
import WatchDemo2 from './components/WatchDemo2.vue'
import LifeDemo from './components/LifeDemo.vue'
import ImageDemo2 from './components/ImageDemo2.vue'
import Parent from './components/Parent.vue'
import Child from './components/Child.vue'
import TestCom from './components/TestCom.vue'

const priceRef = ref(null)
const comRef = ref(null)
onMounted(()=>{
  // console.log(priceRef.value);
  console.log(comRef.value);
})
</script>
<template>

  <h3>入口文件</h3>
  
<!-- 1-用ref函數(shù)來(lái)獲取組件內(nèi)的dom對(duì)象。 -->
<p ref="priceRef">車?yán)遄訂蝺r(jià):49</p>
<TestCom ref="comRef" />
</template>

如圖所示,代碼里面我們給子組件實(shí)例調(diào)用的標(biāo)簽上綁定了一個(gè)ref對(duì)象。然后控制臺(tái)打印一下。

Vue3前端開發(fā),如何獲取組件內(nèi)dom對(duì)象以及子組件的屬性和方法,VUE3,前端,javascript,vue.js

頁(yè)面加載之后,確實(shí)是可以拿到子組件的實(shí)例對(duì)象。但是看不見子組件內(nèi)的屬性和方法。


<script setup>
const msg = '子組件文本'
const btnHandle = ()=>{
    console.log('i am son btnHandle ');
}
defineExpose({
    msg,
    btnHandle
})
</script>
<template>
    <h3>獲取組件內(nèi)的dom對(duì)象練習(xí)-獲取組件的內(nèi)部屬性和方法</h3>

</template>

這個(gè)是子組件里面的內(nèi)容,我們定義了一個(gè)常量,一個(gè)方法。

然后使用了defineExpose編譯宏函數(shù)對(duì)外暴漏這個(gè)屬性和方法。再看看父組件內(nèi)的加載完成后的控制臺(tái)打印情況吧。

Vue3前端開發(fā),如何獲取組件內(nèi)dom對(duì)象以及子組件的屬性和方法,VUE3,前端,javascript,vue.js

如圖,確實(shí)是可以拿到子組件的屬性和方法了,如果不使用編譯宏,是訪問(wèn)不到的。

之所以默認(rèn)不對(duì)外暴漏,就是為了避免出現(xiàn)數(shù)據(jù)的干擾。畢竟,父子組件之間,各司其職。不應(yīng)該輕易的去影響各自的業(yè)務(wù)邏輯。除非特殊情況下,真的需要訪問(wèn)了,才會(huì)使用這個(gè)編譯宏對(duì)外暴漏。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-813923.html

到了這里,關(guān)于Vue3前端開發(fā),如何獲取組件內(nèi)dom對(duì)象以及子組件的屬性和方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue3前端開發(fā),父組件給子組件傳遞數(shù)據(jù)練習(xí)

    Vue3前端開發(fā),父組件給子組件傳遞數(shù)據(jù)練習(xí)

    Vue3前端開發(fā),父組件給子組件傳遞數(shù)據(jù)練習(xí)!還是借用剛剛的組件模板,來(lái)開展父?jìng)髯拥木毩?xí)。 依舊是需要借助官方提供的宏函數(shù)來(lái)接收數(shù)據(jù)。defineProps. 這個(gè)是父組件里面的內(nèi)容。我們自定義了2個(gè)變量,一個(gè)是車?yán)遄訂蝺r(jià)。一個(gè)是純文本。 一個(gè)數(shù)字類型,一個(gè)文本類型。都

    2024年01月22日
    瀏覽(28)
  • vue3 - vue3中使用ref來(lái)獲取dom節(jié)點(diǎn)

    vue3 - vue3中使用ref來(lái)獲取dom節(jié)點(diǎn)

    vue3和vue2獲取元素的不同:vue2是通過(guò) this.$refs api獲取dom節(jié)點(diǎn)的 ; vue3是 直接使用同名的 ref 響應(yīng)式數(shù)據(jù)來(lái)獲取的; 1,常規(guī)使用 注意: 節(jié)點(diǎn)上的 ref=“input” 需要和 const input = ref(null)相對(duì)應(yīng) 才能獲取到此dom節(jié)點(diǎn) 2,v-for中的ref獲取 有時(shí)我們需要 獲取循環(huán)中的dom節(jié)點(diǎn) 并根據(jù)狀態(tài)

    2024年02月16日
    瀏覽(19)
  • 前端react入門day03-react獲取dom與組件通信

    前端react入門day03-react獲取dom與組件通信

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) 目錄 受控表單綁定? React中獲取DOM 組件通信 父?jìng)髯? 父?jìng)髯?基礎(chǔ)實(shí)現(xiàn) 父?jìng)髯?props說(shuō)明 父?jìng)髯?- 特殊的prop children 子傳父? 使用狀態(tài)提升實(shí)現(xiàn)兄弟組件通信 使用Context機(jī)制跨

    2024年02月01日
    瀏覽(23)
  • vue3 使用ref 獲取 dom 元素的高度

    vue3 使用ref 獲取 dom 元素的高度

    代碼實(shí)現(xiàn): 輸出結(jié)果: ?

    2024年02月16日
    瀏覽(22)
  • vue3使用ref獲取dom結(jié)果為‘null’

    在vue2中,我們使用ref獲取dom元素時(shí)是這樣子的: 在vue3中,我們使用ref獲取dom元素時(shí)是這樣子的: 下面來(lái)說(shuō)說(shuō)vue3中獲取dom為空的原因: setup的return中應(yīng)該拋出ref封裝的字段,否則ref的值只是定義了并不能響應(yīng)式使用,事實(shí)上,所有ref或者reactive定義的值都應(yīng)在return中拋出。

    2024年02月12日
    瀏覽(25)
  • uniapp小程序vue3獲取dom實(shí)例createSelectorQuery

    需求,在頁(yè)面中,有時(shí)需要獲取渲染組件的長(zhǎng)寬信息,可以使用 select 選擇器進(jìn)行查詢,直接上代碼如下:

    2024年02月16日
    瀏覽(19)
  • Vite+Vue3項(xiàng)目如何獲取環(huán)境配置,并解決前端跨域問(wèn)題

    根目錄新建.env.development和.env.production文件 package.json配置啟動(dòng)參數(shù) vite命令啟動(dòng)項(xiàng)目時(shí),指定mode參數(shù),加載vite.config.ts文件。 配置代理 在vite.config.ts中配置代理 配置vite-plugin-html 通過(guò)vite-plugin-html組件,可以將配置文件中的數(shù)據(jù),綁定到index.html中,可以實(shí)現(xiàn)不同環(huán)境的頁(yè)面ti

    2024年02月19日
    瀏覽(88)
  • 解決vue3+echarts關(guān)于無(wú)法獲取dom寬度和高度的問(wèn)題

    解決vue3+echarts關(guān)于無(wú)法獲取dom寬度和高度的問(wèn)題

    近期寫vue3項(xiàng)目,很多地方都用到了echarts,剛開始寫的時(shí)候,發(fā)現(xiàn)圖一直出不來(lái),報(bào)錯(cuò)/報(bào)警內(nèi)容一般有兩項(xiàng): Uncaught (in promise) Error: Initialize failed: invalid dom. vue3 [ECharts] Can’t get DOM width or height. 分別解釋一下這倆報(bào)錯(cuò) 第一個(gè)報(bào)錯(cuò)是在初始化echarts的時(shí)候,沒有找到對(duì)應(yīng)的dom元素

    2024年02月14日
    瀏覽(28)
  • 前端新手Vue3+Vite+Ts+Pinia+Sass項(xiàng)目指北系列文章 —— 第十一章 基礎(chǔ)界面開發(fā) (組件封裝和使用)

    前端新手Vue3+Vite+Ts+Pinia+Sass項(xiàng)目指北系列文章 —— 第十一章 基礎(chǔ)界面開發(fā) (組件封裝和使用)

    Vue 是前端開發(fā)中非常常見的一種框架,它的易用性和靈活性使得它成為了很多開發(fā)者的首選。而在 Vue2 版本中,組件的開發(fā)也變得非常簡(jiǎn)單,但隨著 Vue3 版本的發(fā)布,組件開發(fā)有了更多的特性和優(yōu)化,為我們的業(yè)務(wù)開發(fā)帶來(lái)了更多便利。本文將介紹如何使用 Vue3 開發(fā)業(yè)務(wù)組件

    2024年02月19日
    瀏覽(97)
  • vue3獲取this對(duì)象

    vue3獲取this對(duì)象

    在vue3,獲取this對(duì)象有兩種方式 setup的第二個(gè)參數(shù)context是執(zhí)行上下文的參數(shù),打印contex如下所示 可以獲取子傳父屬性的對(duì)象信息內(nèi)容emit方法 ? getCurrentInstance方法,獲取當(dāng)前組件的實(shí)例、上下文來(lái)操作router和vuex等 使用:由vue提供,按需引入:import { getCurrentInstance} from \\\'vue\\\' 此

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包