[vue]初探生命周期


Vue 實例從創建到銷毀的過程,就是生命周期。也就是從開始創建、初始化數據、編譯模板、掛載Dom→渲染、更新→渲染、卸載等一系列過程,我們稱這是 Vue 的生命周期。

一.創建/銷毀,緩存

1.created & beforeCreate

beforeCreate 實例未創建,調用不到data數據

created 實例創建完成后調用,此階段完成了數據的觀測等,但尚未掛載

應用:

beforeCreate,加loading事件;

created, 寫一些用於初始化完成的事件;結束loading事件,ajax 異步請求獲取數據

2.destroyed & beforeDestroy

beforeDestroy 實例銷毀之前調用

destroyed 實例銷毀之后調用

在父組件中使用v-if來控制實例的銷毀和創建

應用: 主要在實例銷毀之前解綁一些使用addEventListener 監聽的事件等;可以做一個確認停止事件的確認框

補充說明,actived & deactive

使用內置組件 keep-alive 來緩存實例,而不是頻繁創建和銷毀(開銷大)

actived 實例激活

deactived 實例失效

在父組件中使用keep-alive來實現實例的緩存

此時v-if不再控制實例的銷毀和創建,而是配合控制緩存實例的激活和失效

應用:性能優化

初始化的時候,undefined(對應的是beforeCreate事件),'000'(對應的created事件),'激活了'(對應的是actived事件);

注意到之后再點擊兩次button,相繼出現 '失效了' '激活了' ,此時控制的不再是銷毀(destroyed)/創建(created),而是 失效(對應的是deactived事件)和激活(對應的是actived事件);

從而達到通過緩存來進行性能優化的目的

二.掛載,更新

1.mounted & beforeMount

beforeMount (實例創建完)el未掛載到實例上,獲取的是vue啟動前的最初DOM

mounted (實例創建完)並且el掛載到實例上后調用,獲取的是vue啟動后的DOM(執行一次,之后的vue數據變化觸發updated)

2.updated & beforeUpdate

beforeUpdate 獲取數據更新前的原DOM

updated 獲取數據更新后的DOM;

掛載之后,vue的數據改變會引起頁面視圖的改變,此時觸發的是updated事件,而不是mounted(mounted只會在掛載實例的時候調用一次)

應用:獲取調試前后的DOM;對數據統一處理,可以在這里寫上相應函數

mounted只在初始化掛載實例的時候調用一次,之后所有到數據變化都會調用beforeUpdate事件和updated事件(而不是mounted事件)

最后結合官網的圖示,能夠理出一個比較清晰的思路來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM