• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • vue生命周期示意圖

    這里寫自定義目錄標題

    vue生命周期示意圖

    在這里插入圖片描述
    Vue在實例化的過程中,會調 beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDestroy, destroyed ,些生命周期的鉤子,給我們提供了執行自定義邏輯的機會。:

    1. beforeCreate
      ? (更新前)數據還沒有監聽,沒有綁定到vue對象實例,同時也沒有掛載對象(實例剛剛創建,數據檢測和事件初始化都未開始);
    2. created
      ? (創建后) 完成數據觀測,屬性和方法的運算,初始化事件,$屬性還沒有顯示出來(載入前)在掛載開始之前被調用,相關的函數首次被調用。實例已完成以下的配置:編譯模板,把里面的數據和模板生成。注意此時還沒有掛載到頁面上。(載入后)在被新創建的el屬性還沒有顯示出來
    3. beforeMount:
      ? (載入前) 在掛載開始之前被調用,相關的render函數首次被調用。實例已完成以下的配置:編譯模板,把data里面的數據和模板生成html。注意此時還沒有掛載html到頁面上。此時打印this.$el 輸出的是節點(模板已經編譯好了,根據數據和模板已經生成了對應的元素對象,將數據對象關聯到了對象的 elel屬性,el屬性是一個HTMLElement對象,也就是這個階段,vue實例通過原生的createElement等方法來創建這個html片段,準備注入到我們vue實例指明的el屬性所對應的掛載點(模板編譯完成,有一個虛擬DOM節點)
    4. mounted:
      ? (載入后)將(el).eljquery(el).的內容掛載到了el,相當于我們在jquery執行了(el).html(el),domdomel),生成頁面上真正的dom,上面我們就會發現dom的元素和我們el的元素是一致的。在此之后,我們能夠用方法來獲取到el元素下的dom對象,并進 行各種操作;(替換或者插入DOM,形成真實的DOM節點)
    5. beforeUpdate(數據改變,但視圖還沒更新)
      ? (更新前) 在數據更新之前調用,發生在虛擬DOM重新渲染和打補丁之前。可以在該鉤子中進一步地更改狀態,不會觸發附加的重渲染過程。數據改變,但是還沒有渲染的時候
    6. updated
      ? 視圖更新完成;
    7. beforeDestroy
      ? watchers、組件和事件監聽器銷毀之前;
    8. destroyed
      ? 銷毀完成;

    代碼實例

    // An highlighted block
    <div id="app">{{a}}</div>
     
    var myVue = new Vue({
        el: "#app",
        data: {
        	a: "HelloWord"
        },
        beforeCreate: function() {
        	console.log("創建前")
    	console.log(this.a) //undefined
    	console.log(this.$el) //undefined
        },
        created: function() {
    	console.log("創建之后");
    	console.log(this.a) //HelloWord
    	console.log(this.$el) //undefined
        },
        beforeMount: function() {
    	console.log("mount之前")
    	console.log(this.a) //HelloWord
    	console.log(this.$el) //<div id="app">{{a}}</div>
        },
        mounted: function() {
    	console.log("mount之后")
    	console.log(this.a) //HelloWord
    	console.log(this.$el) //<div id="app">HelloWord</div>
        },
        beforeUpdate: function() {
    	alert("更新前");
    	console.log(this.a) //Welcome to Vue,頁面上顯示的還是老的數據
        },
        updated: function() {
    	console.log("更新完成");
    	console.log(this.a) //Welcome to Vue,頁面上更新為新數據
        },
        beforeDestroy: function() {
    	console.log("銷毀前");
    	console.log(this.a) //Welcome to Vue
    	console.log(this.$el) //<div id="app">Welcome to Vue</div>
        },
        destroyed: function() { 
    	console.log("已銷毀");
    	console.log(this.a) //Welcome to Vue
    	console.log(this.$el) //<div id="app">Welcome to Vue</div>
        }
    });
    setTimeout(function(){
    	myVue.a = "Welcome to Vue";
    },500)
    setTimeout(function(){
    	myVue.$destroy();
    },1000)
    setTimeout(function(){
    	alert("再次改變 a 的值")
    	myVue.a = "HelloWord";
    },1500)
    
    

    注意點

    1、beforeMount實例化之前 data是a的值:HelloWord、DOM節點是虛擬的,就是先占了個坑(即

    {{a}}

    2、$destroy這個方法銷毀的是監聽器,而不是視圖,也就是說之后視圖不再受vue控制

    版權聲明:本文為smiple9102原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/smiple9102/article/details/88172179

    智能推薦

    Vue——生命周期

    生命周期圖例    ...

    vue生命周期

                                      以...

    Vue生命周期

    vue生命周期 第一個框框 new Vue() 表示開始創建一個Vue實例對象 第二個框框 表示剛初始化了一個vue空的實例對象,這個對象上,只有默認的一些生命周期函數和默認的事件,其他的東西都未創建。 第一個生命周期函數 beforeCreate ,在這個函數執行時,data和methods中的數據都還沒有初始化。 下一個框框 進行初始化 第二個生命周期函數 created ,在created中...

    vue 生命周期

    執行順序 生產創建區間 ↓ 跟新區間 銷毀區間 官方文檔: beforeCreate 類型:Function 詳細: 在實例初始化之后,數據觀測 (data observer) 和 event/watcher 事件配置之前被調用。 參考:生命周期圖示 created 類型:Function 詳細: 在實例創建完成后被立即調用。在這一步,實例已完成以下的配置:數據觀測 (data obse...

    Vue 生命周期

    什么是生命周期:從Vue實例創建、運行、到銷毀期間,總是伴隨著各種各樣的事件,這些事件,統稱為生命周期! 生命周期鉤子:生命周期鉤子就是生命周期事件的別名而已; 生命周期鉤子 = 生命周期函數 = 生命周期事件 主要的生命周期函數分類: 創建期間的生命周期函數: 運行期間的生命周期函數: 銷毀期間的生命周期函數 Vue生命周期HTML...

    猜你喜歡

    Vue生命周期

    先放一張官方文檔圖: 鉤子函數 從圖中可以看到Vue生命周期中的幾個鉤子函數 Vue2.0生命周期鉤子函數 描述 beforeCreate 組件實例剛被創建,$data、$el等都為undefined created 組件實例創建完成,$data數據已經綁定,但$el尚未聲明,為undefined beforeMount 組件掛載之前,$el屬性已經生成,其中DOM使用的data變量數據尚未被替換...

    vue生命周期

    每個 Vue 實例在被創建時都要經過一系列的初始化過程——例如,需要設置數據監聽、編譯模板、將實例掛載到 DOM 并在數據變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命周期鉤子的函數,這給了用戶在不同階段添加自己的代碼的機會。 生命周期圖示: 1vue對象生命周期 1)初始化顯示 * beforeCreate() * created() * beforeMou...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡