小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Vue生命周期,我奶奶看了都懂了

 小世界的野孩子 2021-09-24

最近一直在學習Vue,而vue生命周期是我們不可能繞開的一個很核心的知識點,今天來簡單的梳理一下大概的內(nèi)容。

一、鉤子函數(shù)

在一開始學習的時候,總有鉤子函數(shù)這個名詞冒出來,而且在vue官網(wǎng)文檔中也頻繁出現(xiàn),也相信給很多初學者帶來了困擾。那到底什么是鉤子函數(shù)呢?

按我個人的理解,鉤子函數(shù)就是一個函數(shù),就是在vue實例在某個時間點自動執(zhí)行的函數(shù)。鉤子函數(shù)鉤子函數(shù),就是掛載一些東西的,我們把需要實現(xiàn)的一些功能代碼寫在對應的鉤子函數(shù)中,當生命周期在執(zhí)行的時候,就能執(zhí)行我們掛載的代碼。

鉤子函數(shù)的實現(xiàn),基本原理就是callback,回調(diào)函數(shù)。

二、vue生命周期圖示(注釋)

原圖是從vuejs官方文檔上拷下來的,自己用ps寫了一點注釋。

三、vue生命周期詳細解析

1. 實例化vue(組件)對象:new Vue()

2. 初始化事件和生命周期 init events 和 init lifecycle

3. beforeCreate函數(shù):

在實例初始化之后,數(shù)據(jù)觀測 (data observer) 和 event/watcher 事件配置之前被調(diào)用。

即此時vue(組件)對象被創(chuàng)建了,但是vue對象的屬性還沒有綁定,如data屬性,computed屬性還沒有綁定,即沒有值。此時還沒有數(shù)據(jù)和真實DOM。屬性還沒有賦值,也沒有動態(tài)創(chuàng)建template屬性對應的HTML元素(二階段的createUI函數(shù)還沒有執(zhí)行)

4. 掛載數(shù)據(jù)(屬性賦值)

包括 屬性和computed的運算,通過依賴注入導入依賴

5. Created函數(shù):

此時vue對象的屬性有值了,但是DOM還沒有生成,$el屬性還不存在。
此時有數(shù)據(jù)了,但是還沒有真實的DOM

即:data,computed都執(zhí)行了。屬性已經(jīng)賦值,但沒有動態(tài)創(chuàng)建template屬性對應的HTML元素,所以,此時如果更改數(shù)據(jù)不會觸發(fā)updated函數(shù)

如果:數(shù)據(jù)的初始值就來自于后端,可以發(fā)送ajax,或者fetch請求獲取數(shù)據(jù),但是,此時不會觸發(fā)updated函數(shù)

6. 檢查

1)檢查是否有el屬性
檢查vue配置,即new Vue{}里面的el項是否存在,有就繼續(xù)檢查template項。沒有則等到手動綁定調(diào)用vm.$mount()

完成了全局變量$el的綁定。

2)檢查是否有template屬性

檢查配置中的template項,如果沒有template進行填充被綁定區(qū)域,則被綁定區(qū)域的el對象的outerHTML(即整個#app DOM對象,包括< div id=”app” >和< /div>標簽)都作為被填充對象替換掉填充區(qū)域

即:如果vue對象中有 template屬性,那么,template后面的HTML會替換$el對應的內(nèi)容。如果有render屬性(渲染),那么render就會替換template。

即:優(yōu)先關系時: render > template > el

7. beforeMount函數(shù):

模板編譯(template)、數(shù)據(jù)掛載(把數(shù)據(jù)顯示在模板里)之前執(zhí)行的鉤子函數(shù)

此時 this.$el有值,但是數(shù)據(jù)還沒有掛載到頁面上。即此時頁面中的{{}}里的變量還沒有被數(shù)據(jù)替換

8. 模板編譯:用vue對象的數(shù)據(jù)(屬性)替換模板中的內(nèi)容

9. Mounted函數(shù):

模板編譯完成,數(shù)據(jù)掛載完畢

即:此時已經(jīng)把數(shù)據(jù)掛載到了頁面上,所以,頁面上能夠看到正確的數(shù)據(jù)了。

一般來說,我們在此處發(fā)送異步請求(ajax,fetch,axios等),獲取服務器上的數(shù)據(jù),顯示在DOM里。

10. beforeUpdate函數(shù):

組件更新之前執(zhí)行的函數(shù),只有數(shù)據(jù)更新后,才能調(diào)用(觸發(fā))beforeUpdate,注意:此數(shù)據(jù)一定是在模板上出現(xiàn)的數(shù)據(jù),否則,不會,也沒有必要觸發(fā)組件更新(因為數(shù)據(jù)不出現(xiàn)在模板里,就沒有必要再次渲染)

數(shù)據(jù)更新了,但是,vue(組件)對象對應的dom中的內(nèi)部(innerHTML)沒有變,所以叫作組件更新前。(數(shù)據(jù)更了,模板沒更新)

11. updated函數(shù):

組件更新之后執(zhí)行的函數(shù)

vue(組件)對象對應的dom中的內(nèi)部(innerHTML)改變了,所以,叫作組件更新之后

12. beforeDestroy:vue(組件)對象銷毀之前

13. destroyed:vue組件銷毀后

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多