亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談一下Vue技術(shù)棧之生命周期

 更新時間:2023年05月05日 11:23:14   作者:東方青云、  
這篇文章主要介紹了淺談一下Vue技術(shù)棧之生命周期,每一個vue實例從創(chuàng)建到銷毀的過程,就是這個vue實例的生命周期,這些過程中會伴隨著一些函數(shù)的自調(diào)用,需要的朋友可以參考下

1、什么是生命周期

  • 又名:生命周期回調(diào)函數(shù)、生命周期函數(shù)、生命周期鉤子
  • 是什么:Vue在關(guān)鍵時刻幫我們調(diào)用的一些特殊名稱的函數(shù)。
  • 生命周期函數(shù)的名字不可更改,但函數(shù)的具體內(nèi)容是程序員根據(jù)需求編寫的。
  • 生命周期函數(shù)中的this指向vm 或 組件實例對象。

2、分析生命周期

2.1 生命周期鉤子函數(shù)

每個Vue實例在創(chuàng)建時都要經(jīng)過一系列的初始化過程。例如,需要設(shè)置數(shù)據(jù)偵聽、編譯些生命周期鉤子函數(shù),給用戶在不同階段添加代碼的機會。

2.2 生命周期鉤子函數(shù)的作用

  • 有一些其他鉤子,在實例生命周期的不同階段被調(diào)用,如 mountedupdated 和 destroyed。
  • 生命周期鉤子的 this關(guān)鍵字上下文指向調(diào)用它的 Vue 實例,調(diào)用方法如 this.$el。

注:不能使用箭頭函數(shù)(()=>)定義一個生命周期方法,如created:()=> this.fetchTodos()。 這是因為箭頭函數(shù)綁定了父上下文,因此 this與期待的Vue實例不同,this.fechTodos()的行為未定義。

2.3 生命周期鉤子函數(shù)圖例

請?zhí)砑訄D片描述

基本語法:

beforeCreate() {
				console.log('beforeCreate')
			},
			created() {
				console.log('created')
			},
			beforeMount() {
				console.log('beforeMount')
			},
			mounted() {
				console.log('mounted')
			},
			beforeUpdate() {
				console.log('beforeUpdate')
			},
			updated() {
				console.log('updated')
			},
			beforeDestroy() {
				console.log('beforeDestroy')
			},
			destroyed() {
				console.log('destroyed')
			}

語法說明:

Vue 實例有一個完整的生命周期,即 Vue 實例從創(chuàng)建到銷毀的過程。具體可細分為開始 創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛載 DOM 渲染、更新渲染、卸載等一系列過程,稱為 Vue 的生命周期。在 Vue 的整個生命周期中,提供了一些生命周期鉤子函數(shù),為執(zhí)行自定義邏輯 提供了機會。

  1. beforeCreate:在實例初始化之后,數(shù)據(jù)觀測和 event/watch 事件配置之前被調(diào)用。
  2. created:實例已經(jīng)創(chuàng)建完成之后被調(diào)用。在這一步,實例已完成以下的配置:數(shù)據(jù)觀測、屬性和方法的運算、event/watch 事件回調(diào)。然而,掛載階段還沒有開始,$el 屬性目前不可見。
  3. beforeMount:在掛載開始之前被調(diào)用,相關(guān)的渲染函數(shù)首次被調(diào)用。在此階段,它檢查是否有任何模板可用于要在 DOM 中呈現(xiàn)的對象:如果沒有找到模板,那么將所定義元素的外部 HTML 視為模板。
  4. mounted:el 被新創(chuàng)建的 vm. $el 替換,并掛載到實例上,之后調(diào)用該鉤子。一旦模板準(zhǔn)備就緒,它將數(shù)據(jù)放入模板并創(chuàng)建可呈現(xiàn)元素。
  5. beforeUpdate:數(shù)據(jù)更新時調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補丁之前。可以在此鉤子中進一步更改狀態(tài),不會觸發(fā)附加的重渲染過程。
  6. updated:由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補丁,在此之后調(diào)用該鉤子。通過實際更新 DOM 對象并觸發(fā)updated 鉤子,屏幕上的變化得到呈現(xiàn)。
  7. beforeDestroy:實例銷毀之前調(diào)用。在這一步,實例仍然完全可用。在 Vue 對象被破壞并從內(nèi)存中釋放之前,beforeDestroy 鉤子被觸發(fā),并允許在其中處理自定義代碼。
  8. destroyed:Vue 實例銷毀后調(diào)用。調(diào)用后,Vue 實例指示的所有東西都會解綁,所有事件偵聽器會被移除,所有子實例也會被銷毀。該鉤子在服務(wù)器端渲染期間不被調(diào)用。 可以使用生命周期鉤子函數(shù)在 Vue對象生命周期的不同階段添加自定義代碼。它將幫助 設(shè)計人員控制在 DOM 中創(chuàng)建對象的流程,以及更新和刪除對象。

完整生命周期鉤子函數(shù)調(diào)用關(guān)系如下圖所示:

請?zhí)砑訄D片描述

2.4 生命周期鉤子函數(shù)的應(yīng)用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
</head>
<body>
    <div id="root">
        <h3>{{information}}</h3>
        <button @click="changeInformation">改變信息</button>
        <button @click="destroyVM">銷毀Vue實例</button>
    </div>
    <script>
        new Vue({
            el: '#root',
            data() {
                return {
                    information: '東方青云歡迎您'
                }
            },
            methods: {
                changeInformation() {
                    this.information = '我來了,您在哪里?'
                },
                destroyVM() {
                    this.$destroy()//銷毀Vue實例
                }
            },
            beforeCreate() {
                console.log('=====beforeCreate=====')
                console.log('el:' + this.$el)//未定義
                console.log("data:" + this.$data)//未定義
                console.log('=====beforeCreate=====')
            },
            created() {
                console.log('====created=====');
                console.log('el:' + this.$el)//未定義
                console.log("data:" + this.$data)//已被初始化為[object Object]
                console.log("information:" + this.information);//information:東方青云歡迎您
                console.log('====created=====');
            },
            beforeMount() {
                console.log('====beforeMount====');
                console.log('el:' + this.$el);//el:[object HTMLDivElement]
                console.log(this.$el);//當(dāng)前掛載元素
                document.querySelector('h3').innerText = '1'//無效,虛擬dom
            },
            mounted() {
                // document.querySelector('h3').innerText = '1'//有效,已轉(zhuǎn)化為真實dom
            },
            beforeUpdate() {
                console.log('====beforeUpdate====');
                console.log(this.information);
                // debugger;//斷點調(diào)試
            },
            updated() {
                console.log(this.information);
            },
            beforeDestroy() {
                console.log('我要被銷毀了');
            },
            destroyed() {
                console.log('銷毀完畢');
            },
        })
    </script>
</body>
</html>

3、生命周期總結(jié)

常用的生命周期鉤子:

  • mounted: 發(fā)送ajax請求、啟動定時器、綁定自定義事件、訂閱消息等【初始化操作】。
  • beforeDestroy: 清除定時器、解綁自定義事件、取消訂閱消息等【收尾工作】。

關(guān)于銷毀Vue實例:

  • 銷毀后借助Vue開發(fā)者工具看不到任何信息。
  • 銷毀后自定義事件會失效,但原生DOM事件依然有效。
  • 一般不會在beforeDestroy操作數(shù)據(jù),因為即便操作數(shù)據(jù),也不會再觸發(fā)更新流程了。

到此這篇關(guān)于淺談一下Vue技術(shù)棧之生命周期的文章就介紹到這了,更多相關(guān)Vue技術(shù)棧的生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決vue更新路由router-view復(fù)用組件內(nèi)容不刷新的問題

    解決vue更新路由router-view復(fù)用組件內(nèi)容不刷新的問題

    今天小編就為大家分享一篇解決vue更新路由router-view復(fù)用組件內(nèi)容不刷新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 一篇Vue、React重點詳解大全

    一篇Vue、React重點詳解大全

    這篇文章主要介紹了一篇Vue、React重點詳解大全,文章內(nèi)容詳細,通過案例可以更好的理解其相關(guān)知識,需要的朋友可以參考下
    2023-01-01
  • 使用Elemen加上lang=“ts“后編譯報錯

    使用Elemen加上lang=“ts“后編譯報錯

    本文主要介紹了使用Elemen加上lang=“ts“后編譯報錯,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • vue中,在本地緩存中讀寫數(shù)據(jù)的方法

    vue中,在本地緩存中讀寫數(shù)據(jù)的方法

    今天小編就為大家分享一篇vue中,在本地緩存中讀寫數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue+element實現(xiàn)手機號驗證碼注冊的示例

    vue+element實現(xiàn)手機號驗證碼注冊的示例

    本文主要介紹了vue+element實現(xiàn)手機號驗證碼注冊的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • javaScript與vue獲取元素的方法代碼示例

    javaScript與vue獲取元素的方法代碼示例

    在開發(fā)中我們可能會遇到這樣的問題,文本框聚焦、元素點擊等,所以下面這篇文章主要給大家介紹了關(guān)于javaScript與vue獲取元素的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Vue?warn:Property?"state"?was?accessed?during?render解決

    Vue?warn:Property?"state"?was?accessed?during

    這篇文章主要為大家介紹了Vue?warn:Property?"state"?was?accessed?during?render的報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • vue中拆分組件的實戰(zhàn)案例

    vue中拆分組件的實戰(zhàn)案例

    最近在學(xué)vue,試著寫個單頁應(yīng)用,在寫組件,拆分組件時遇到一些困惑,下面這篇文章主要給大家介紹了關(guān)于vue中拆分組件的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • vue fetch中的.then()的正確使用方法

    vue fetch中的.then()的正確使用方法

    這篇文章主要介紹了vue fetch中的.then()的正確使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Element-ui upload上傳文件限制的解決方法

    Element-ui upload上傳文件限制的解決方法

    這篇文章主要介紹了Element-ui upload上傳文件限制的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論