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

快速打通 Vue 3(四):標(biāo)簽的 ref 屬性與 Vue3 生命周期

這篇具有很好參考價(jià)值的文章主要介紹了快速打通 Vue 3(四):標(biāo)簽的 ref 屬性與 Vue3 生命周期。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

很激動(dòng)進(jìn)入了 Vue 3 的學(xué)習(xí),作為一個(gè)已經(jīng)上線了三年多的框架,很多項(xiàng)目都開始使用 Vue 3 來編寫了
這一組文章主要聚焦于 Vue 3 的新技術(shù)和新特性
如果想要學(xué)習(xí)基礎(chǔ)的 Vue 語法可以看我專欄中的其他博客
Vue(一):Vue 入門與 Vue 指令
Vue(二):計(jì)算屬性與 watch 監(jiān)聽器
Vue(三):Vue 生命周期與工程化開發(fā)
一篇文章快速通關(guān) Vuex(適合小白學(xué)習(xí))
Vue 框架前導(dǎo):詳解 Ajax
快速打通 Vue 3(一):基本介紹與組合式 API
快速打通 Vue 3(二):響應(yīng)式對象基礎(chǔ)
快速打通 Vue 3(三):Vue3 中的 watch 監(jiān)聽器與新特性
上一篇 Vue3 博客:快速打通 Vue 3(三):Vue3 中的 watch 監(jiān)聽器與新特性
后續(xù)還會(huì)繼續(xù)更新,期待大家的關(guān)注!

因?yàn)槲蚁胍獙?Vue3 分模塊整理,后面要接一篇路由的整理,所以這篇文章會(huì)比較短,后面路由想保證量大管飽(bushi)。

06. 標(biāo)簽的 ref 屬性

? 當(dāng)我們想要獲取一個(gè)標(biāo)簽對應(yīng)的 DOM 元素的時(shí)候在 JavaScript 中,我們通過 document.querySelector() 來借助類選擇器的寫法獲取,但是在 Vue 中,我們的 DOM 元素是掛載在同一個(gè)網(wǎng)頁上的,這些名稱難免會(huì)重復(fù),所以需要?jiǎng)e的方式去獲取。

6.1 用在普通標(biāo)簽上

這里就需要借助給標(biāo)簽加上 ref 屬性

直接來上代碼

<template>
    <h1 ref="h1">111</h1>
    <button @click="getLog">命令展示</button>
</template>

<script setup lang="ts">
    import { ref } from 'vue';
    const h1 = ref();
    const getLog = () => {
      console.log(h1.value);
    }
</script>

? 這里我們書寫了一個(gè) h1 標(biāo)簽,給 h1 加上 ref 屬性,屬性值為 h1,下面來通過與屬性值同名的響應(yīng)式變量來獲取這個(gè) DOM 元素。
快速打通 Vue 3(四):標(biāo)簽的 ref 屬性與 Vue3 生命周期,vue.js,前端,javascript

可以直接拿到這個(gè)對象,像我們之前去操作 DOM 元素那樣,可以對它進(jìn)行任何操作。

  • 補(bǔ)充:這里為什么不直接寫 console.log(h1.vale) 而是要書寫一個(gè)函數(shù)然后綁定事件?主要原因是我們執(zhí)行 javaScript 代碼的時(shí)候,這個(gè)元素還沒有掛載完成,在后面學(xué)習(xí)生命周期后,可以通過鉤子函數(shù)實(shí)現(xiàn)在掛載完成后打印。

6.2 用在組件標(biāo)簽上

<template>
<Son ref="son"></Son>
<button @click="showMessage">打印信息</button>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import Son from './components/Son.vue';
const son = ref();
const showMessage = () => {
  console.log(son.value);
}
</script>

和上面相同,打印出來的是子組件的示例對象,但示例對象中的信息我們是無法拿到的,需要子組件去配置
defineExpose({暴露出去的信息})

<template>
</template>
<script setup lang="ts">
import { ref } from 'vue';

const a = ref();
const b = ref();
const c = ref();

defineExpose({a, b, c});
</script>

快速打通 Vue 3(四):標(biāo)簽的 ref 屬性與 Vue3 生命周期,vue.js,前端,javascript

我們就能拿到暴露出來的信息,也可以通過數(shù)組來導(dǎo)出。

07. 生命周期

? Vue 組件實(shí)例在創(chuàng)建時(shí)要經(jīng)歷一系列的初始化步驟,在此過程中 Vue 會(huì)在特定的事件去調(diào)用特定的函數(shù),從而讓開發(fā)者有機(jī)會(huì)在特定的階段去運(yùn)行自己的代碼,這些待定的函數(shù)稱之為生命周期鉤子。

Vue2 相比, Vue3 對生命周期做了簡化,不再去寫選項(xiàng)式API,而是采用函數(shù)的方式去代替,并且對各個(gè)生命周期的函數(shù)都做了簡化:

  • Vue2 的生命周期

    創(chuàng)建階段:beforeCreatecreated

    掛載階段:beforeMount、mounted

    更新階段:beforeUpdateupdated

    銷毀階段:beforeDestroy、destroyed

  • Vue3 的生命周期

    創(chuàng)建階段:setup

    掛載階段:onBeforeMount、onMounted

    更新階段:onBeforeUpdate、onUpdated

    卸載階段:onBeforeUnmount、onUnmounted

? 比較重要的兩個(gè)階段就是創(chuàng)建階段和掛載階段,在更新階段我們可以向服務(wù)端請求數(shù)據(jù),掛載完成后我們可以獲取 DOM 元素然后對其進(jìn)行操作。

? 在 Vue3 中將其創(chuàng)建階段簡化為 setup,方便了代碼的書寫。

我們上面提到為什么不使用 console.log(h1.value) 直接打印而是要寫個(gè)函數(shù),就是因?yàn)楫?dāng)我們能看到那個(gè)按鈕的時(shí)候說明已經(jīng)掛載完畢了,可以來獲取元素了,如果直接打印獲取到的就是 undefined 。

但通過生命周期函數(shù)可以實(shí)現(xiàn):

<template>
  <h1 ref="h1">111</h1>
</template>

<script setup lang="ts">
  import { onMounted, ref } from 'vue';
  const h1 = ref();
  onMounted(() => {
    console.log(h1.value);
  })
</script>

我們在掛載完畢后再打印就能夠獲取到了。

再來查看一個(gè)父子組件的生命周期關(guān)系

<template>
<Son></Son>
</template>

<script setup lang="ts">
import { onBeforeMount, onBeforeUpdate, onMounted } from 'vue';
import Son from './components/Son.vue';
console.log("父組件 - 創(chuàng)建階段");
onBeforeMount(() => {
  console.log("父組件 - 掛載前階段")
})
onMounted(() => {
  console.log("父組件 - 掛載后階段")
})
onBeforeUpdate(() => {
  console.log("父組件 - 更新前階段")
})
onBeforeUpdate(() => {
  console.log("父組件 - 更新后階段")
})
</script>
<template>
</template>

<script setup lang="ts">
import { onBeforeMount, onBeforeUpdate, onMounted } from 'vue';

console.log("子組件 - 創(chuàng)建階段");
onBeforeMount(() => {
  console.log("子組件 - 掛載前階段")
})
onMounted(() => {
  console.log("子組件 - 掛載后階段")
})
onBeforeUpdate(() => {
  console.log("子組件 - 更新前階段")
})
onBeforeUpdate(() => {
  console.log("子組件 - 更新后階段")
})
</script>

打印結(jié)果

快速打通 Vue 3(四):標(biāo)簽的 ref 屬性與 Vue3 生命周期,vue.js,前端,javascript

先去加載完成子組件再去加載父組件,所以通過網(wǎng)絡(luò)請求數(shù)據(jù)并且傳入子組件需要在父組件的創(chuàng)建階段完成。文章來源地址http://www.zghlxwxcb.cn/news/detail-801802.html

到了這里,關(guān)于快速打通 Vue 3(四):標(biāo)簽的 ref 屬性與 Vue3 生命周期的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Vue3全家桶 - Vue3 - 【7】生命周期

    Vue3全家桶 - Vue3 - 【7】生命周期

    Vue3官網(wǎng)-生命周期鉤子函數(shù); 每個(gè)Vue組件實(shí)例在創(chuàng)建時(shí)都需要經(jīng)歷一系列的初始化步驟,比如數(shù)據(jù)偵聽、編譯模板、掛載實(shí)例到 DOM ,以及在數(shù)據(jù)改變時(shí)更新 DOM 。在此過程中,它也會(huì)運(yùn)行被稱為生命周期鉤子的函數(shù),讓開發(fā)者有機(jī)會(huì)在特定階段運(yùn)行自己的代碼。最常見的是

    2024年03月13日
    瀏覽(23)
  • 分析Vue3生命周期

    在Vue中,生命周期是組件從創(chuàng)建到銷毀的整個(gè)過程中的不同階段。Vue組件的生命周期主要由一系列的鉤子函數(shù)(hook functions)組成。 以下是Vue組件生命周期的主要階段: 1. 創(chuàng)建階段: ? ?- beforeCreate:在實(shí)例被創(chuàng)建之前調(diào)用,此時(shí)組件的響應(yīng)式屬性和事件還未初始化。 ? ?

    2024年01月25日
    瀏覽(39)
  • Vue3 的生命周期

    1、初始化階段: 【1】beforeCreate == setup() data掛載之前 【2】created == setup() data掛載了,但是寫的模板語法沒有渲染到頁面上 【3】beforeMount == onBeforeMount 掛載了,但是頁面沒有渲染 【4】mounted == onMounted 頁面渲染結(jié)束 --------------------------------------全部Vue初始化完成了 ------------

    2024年02月09日
    瀏覽(21)
  • vue3的生命周期

    vue3的生命周期

    vue3中的選項(xiàng)式生命周期鉤子基本與vue2中的大體相同,它們都是定義在 vue實(shí)例的對象參數(shù)中的函數(shù),它們在vue中實(shí)例的生命周期的不同階段被調(diào)用。生命周期函數(shù)鉤子會(huì)在我們的實(shí)例 掛載,更新,卸載等過程中被調(diào)用的函數(shù) 以下是vue3中的主要選項(xiàng)式生命周期函數(shù)鉤子: be

    2024年02月09日
    瀏覽(19)
  • Vue(標(biāo)簽屬性:ref、配置項(xiàng):props、混入mixin、插件、樣式屬性:scroped)

    Vue(標(biāo)簽屬性:ref、配置項(xiàng):props、混入mixin、插件、樣式屬性:scroped)

    前面提及到了標(biāo)簽屬性:keys 這里將了解ref:打標(biāo)識(shí) 正常布置腳手架并創(chuàng)建入口文件main.js引入組件 給一個(gè)按鈕獲取上方的dom的方法,方法中使用什么進(jìn)行獲取dom元素 是使用獲取id方法給標(biāo)簽設(shè)置id,直接操作dom?? 錯(cuò)誤? 既然原生js可以給dom添加id,那么Vue也有類似的標(biāo)識(shí)方

    2024年02月02日
    瀏覽(44)
  • vue3-生命周期鉤子函數(shù)

    聲明周期函數(shù)onMounted ,onUnmounted,onUpdated onMounted:頁面渲染之前執(zhí)行,執(zhí)行完,頁面就出來了 onUnmounted:組件注銷之前執(zhí)行,執(zhí)行完組件就不在頁面顯示了。如果隱藏組件就行執(zhí)行。 onUpdated:當(dāng)組件內(nèi)的內(nèi)容發(fā)生變化時(shí),就會(huì)執(zhí)行這個(gè)更新鉤子函數(shù),比如刪除數(shù)組中的某個(gè)元素

    2024年02月11日
    瀏覽(32)
  • 【Vue3】學(xué)習(xí)筆記-生命周期

    【Vue3】學(xué)習(xí)筆記-生命周期

    Vue3.0中可以繼續(xù)使用Vue2.x中的生命周期鉤子,但有有兩個(gè)被更名: beforeDestroy 改名為 beforeUnmount destroyed 改名為 unmounted Vue3.0也提供了 Composition API 形式的生命周期鉤子,與Vue2.x中鉤子對應(yīng)關(guān)系如下: beforeCreate === setup() created ======= setup() beforeMount === onBeforeMount mounted ======= onMo

    2024年02月11日
    瀏覽(29)
  • Vue2(生命周期,列表排序,計(jì)算屬性和監(jiān)聽器)

    Vue2(生命周期,列表排序,計(jì)算屬性和監(jiān)聽器)

    前言 上一章博客我們講解了Vue基礎(chǔ) 這一章我們來講Vue生命周期,列表過濾,計(jì)算屬性和監(jiān)聽器 一,生命周期 通常也叫生命周期回調(diào)函數(shù)、生命周期函數(shù)、生命周期鉤子 vue初始化時(shí)在不同的階段調(diào)用的不同函數(shù) 生命周期函數(shù)的 this 指向?yàn)関ue實(shí)例,名字不能更改 1.1,生命周期函

    2024年02月13日
    瀏覽(49)
  • Vue快速入門,常用指令,生命周期

    Vue快速入門,常用指令,生命周期

    Vue常用指令 ?案例: ? Vue生命周期 ? ?

    2024年02月03日
    瀏覽(28)
  • 【Vue】Vue快速入門、Vue常用指令、Vue的生命周期

    【Vue】Vue快速入門、Vue常用指令、Vue的生命周期

    ??個(gè)人主頁: ?? 葉落閑庭 ??我的專欄:?? c語言 數(shù)據(jù)結(jié)構(gòu) javaEE 操作系統(tǒng) Redis 石可破也,而不可奪堅(jiān);丹可磨也,而不可奪赤。 1.新建HTML頁面,引入Vue.js文件 2.在JS代碼區(qū)域,創(chuàng)建Vue核心對象,進(jìn)行數(shù)據(jù)綁定 3.編寫視圖 指令:HTML標(biāo)簽上帶有Vs前綴的特殊屬性,不同指令

    2024年02月07日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包