天天看點

Vue的生命周期--代碼片段

Vue的生命周期--代碼片段

Vue 執行個體有一個完整的生命周期,也就是從開始建立、 初始化資料、 編譯模闆、 挂載 Dom、 渲染

→更新→渲染、 銷毀等一系列過程,我們稱這是 Vue 的生命周期。通俗說就是 Vue 執行個體從建立到

銷毀的過程,就是生命周期。

vue的生命周期:

    1.vue建立之前beforeCreated

    2.建立created

    3.挂載之前beforeMouted

    4.挂載mouted

    5.更新之前beforeUpdate

    6.更新完成updated

    7.銷毀之前 beforeDestory

    8.銷毀完成destoryed 

html部分:

<div id="app" ref="app">
        <!-- ref 用于擷取Dom屬性 -->
        {{name}}
    </div>
      

js部分:

<script>
    let vm = new Vue({//生命周期也是方法,不需要外在幹預
        el: "#app",
        data: {
            name: "VUE開發"
        },
        template:"<h1>this is h1 template</h1>",
        beforeCreate() {//01建立之前(資料沒有挂載,隻是一個空殼,無法操作真實的DOM和通路資料)
            console.log("将要建立")
            console.log(this.$data);//資料 undefined
            console.log(this.$el);//節點  undefined
        },
        created() {//02建立完畢,獲得初始資料,無法渲染DOM[挂載]
            console.log("建立完畢")
            console.log(this.$data);//資料 
            console.log(this.$el);//節點  undefined
        },
        beforeMount() {//03即将挂載,可以通路到DOM也可以通路原始資料
            console.log("即将挂載");
            console.log(this.$el);

        },
        mounted() {//04挂載完畢,一個vue的基本操作(mustache渲染完成),有資料,有DOM
            console.log("挂載完畢");
            console.log(this.$el);
        },
        beforeUpdate() {//05更新之前
            //控制台輸入vm.$data.name = "新值",後觸發函數 beforeUpdate()
            console.log("即将更新渲染");
            let name = this.$refs.app.innerHTML;
            console.log("name:" + name);
        },
        updated() {//06更新完成 data中的資料已經被更新後的值替換
            console.log("更新渲染完成");
            let name = this.$refs.app.innerHTML;
            console.log("name:" + name);
        },
        //以下兩個在控制台并不能被列印出來,執行完vm.$destroy()即可答列印
        beforeDestroy () {//07銷毀之前  一般在這裡做一些善後工作,例如清除計時器等事件
            console.log("銷毀之前");
            console.log(this.$data);//資料 
            console.log(this.$el);//節點  
        },
        destroyed () {//08銷毀完成  元件的資料綁定、監聽...去掉後隻剩下 dom 空殼
            console.log("銷毀完成");
            console.log(this.$data);//資料 
            console.log(this.$el);//節點  
        } 
    });
    console.log("建立完畢後vue執行個體外的列印輸出" + vm.$data)
</script>