1. 程式人生 > 其它 >Vue 開發基礎(上)05

Vue 開發基礎(上)05

Vue 開發基礎(上)

Vue 的生命週期

  Vue 例項為生命週期提供了回撥函式,用於特定的情況觸發,貫穿整個例項,給使用者在不同階段新增自己的程式碼提供了機會。每一個 Vue 例項在被建立時都需要經過一系列的初始化過程,如初始資料監聽、編譯模板、將例項掛載到 DOM 並在資料變化是更新 DOM 等。

  鉤子函式

    用於描述 Vue 例項從建立到銷燬的整個生命週期

    例項建立

      beforeCreate 以及 Create 鉤子函式的使用

<body>
    <!-- ③ 將例項物件進行頁面掛載 -->
<div id="app
">{{ msg }}</div> </body> <script> var vm = new Vue({ el: '#app', data: { msg: '張三' }, // ① 在建立例項時觸發 beforeCreate() { console.log('建立例項之前') console.log(this.$data.msg) }, // ② 整個例項建立完後執行 created() { console.log(
'建立例項之後') console.log(this.msg) } }) </script>

 

    頁面掛載

      例項建立後,如果掛載點 el 存在,就會進行頁面掛載

      beforMount 和 mounted 鉤子函式

<body>
<div id="app">{{ msg }}</div>
</body>


<script>
    var vm = new Vue({
        el: '#app',
        data: {
            msg: 
'張三' }, beforeMount() { console.log('掛在之前') // 通過 this.$el 獲取 el 的 DOM 元素 console.log(this.$el.innerHTML) }, mounted() { console.log('掛在之後') console.log(this.$el.innerHTML) } }) </script>

    資料更新

      掛在完成後,更新資料時,會執行 beforUpdate 和 updated 鉤子函式

<body>
<div id="app">
    <!--  定義需要操作的元素,並給元素設定樣式  v-if 對於元素的顯示隱藏
     ref 用於給元素註冊引用資訊-->
    <div v-if="isShow" ref="self">test</div>
    <!-- 按鈕改變 isShow 的值 來實現顯示隱藏 -->
    <button @click="isShow=!isShow">更新</button>
</div>
</body>


<script>
    var vm = new Vue({
        el: '#app',
        data: {
            // 預設元素隱藏
            isShow: false
        },
        beforeUpdate() {
            console.log('更新之前')
            console.log(this.$refs.self)
        },
        updated() {
            console.log('更新之後')
            console.log(this.$refs.self)
        }
    })
</script>

    例項銷燬

      在生命週期的最後階段執行 beforDestroy 和 destroyed 鉤子函式

<body>
<div id="app">
    <div ref="self">{{ msg }}</div>
</div>
</body>


<script>
    var vm = new Vue({
        el: '#app',
        data: {
            msg: '張三'
        },
        beforeDestroy() {
            console.log('銷燬之前')
            console.log(this.$refs.self)
            console.log(this.msg)
            console.log(vm)
        },
        destroyed() {
            console.log('銷燬之後')
            console.log(this.$refs.self)
            console.log(this.msg)
            console.log(vm)
        }
    })
</script>