Vue 開發基礎(上)05
阿新 • • 發佈:2021-07-10
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>