Vue的生命周期鉤子理解

開發(fā)人員提供了一個(gè)Web開發(fā)人員可以在Vue.js應(yīng)用程序的整個(gè)生命周期中使用的各種方法的討論。

生命周期鉤子是在Vue對象生命周期的某個(gè)階段執(zhí)行的已定義方法。從初始化開始到它被破壞時(shí),對象都會(huì)遵循不同的生命階段。這是一個(gè)著名的圖表,表示掛鉤順序。

image.png

讓我們將代碼添加到鉤子并查看它們?nèi)绾伪唤夤偷碾A段。

<!DOCTYPE html >
<html>
    <head>
        <div id='div1' v-bind:title="div_title">{{hello_message}}</div>
    </head>
    <body>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            var v1 = new Vue({
                el: "#div1",
                data: {
                    hello_message: "Hello, there welcome to VueJS world",
                    div_title: "This is my intro div",
                },
                beforeCreate: function() {
                    alert('Before Create');
                },
                created: function() {
                    alert('Created');
                },
                beforeMount: function() {
                    alert('Before Mount');
                },
                mounted: function() {
                    alert('Mounted');
                },
                beforeUpdate: function() {
                    alert('Before Update');
                },
                updated: function() {
                    alert('Updated');
                },
                beforeDestroy: function() {
                    alert('Before Destroy');
                },
                destroyed: function() {
                    alert('Destroyed');
                }
            }); // To fire updatev1.$data.hello_message = "New message";// This can be invoked to destroy the object, which will fire the destroy hook//v1.$destroy();
        </script>
    </body>
</html>

beforeCreate(新對象誕生)

Vue對象用新方法實(shí)例化。它創(chuàng)建一個(gè)Vue類的對象來處理DOM元素。對象的這個(gè)生命階段可以通過beforeCreated 掛鉤來訪問 。我們可以在這個(gè)鉤子中插入我們的代碼,在對象初始化之前執(zhí)行。

image.png

創(chuàng)建(具有默認(rèn)特性的對象)

在這個(gè)生命階段,對象及其事件完全初始化。 created 是訪問這個(gè)階段并編寫代碼的鉤子。

image.png

beforeMounted(對象在DOM中適合形狀)

這個(gè)鉤子被調(diào)用 beforeMounted。在這個(gè)階段,它檢查是否有任何模板可用于要在DOM中呈現(xiàn)的對象。如果沒有找到模板,那么它將所定義元素的外部HTML視為模板。

已安裝(DOM已準(zhǔn)備就緒并放置在頁面內(nèi))

一旦模板準(zhǔn)備就緒。它將數(shù)據(jù)放入模板并創(chuàng)建可呈現(xiàn)元素。用這個(gè)新的數(shù)據(jù)填充元素替換DOM元素。這一切都發(fā)生在mounted鉤子上。

beforeUpdate(更改已完成,但尚未準(zhǔn)備好更新DOM)

在外部事件/用戶輸入beforeUpdate發(fā)生更改時(shí),此鉤子即 在反映原始DOM元素的更改之前被觸發(fā)。

為了解決這個(gè)問題 beforeUpdated,我添加了下面的代碼。它通過更新DOM來更改運(yùn)行時(shí)中的hello_message。

// To fire updatev1.$data.hello_message="New message";

image.png

更新(在DOM中呈現(xiàn)的更改)

然后,通過實(shí)際更新DOM對象并觸發(fā)updated,屏幕上的變化得到呈現(xiàn) 。

image.png

beforeDestroy(對象準(zhǔn)備死掉)

就在Vue對象被破壞并從內(nèi)存中釋放之前, deforeDestroy 鉤子被觸發(fā),并允許我們在其中處理我們的自定義代碼。

為了激發(fā)這個(gè)鉤子,我添加了下面的代碼來銷毀Vue對象。

//這可以被調(diào)用來銷毀該對象,這將觸發(fā)銷毀鉤v1.$ destroy();

image.png

銷毀(對象停止并從內(nèi)存中刪除)

該 destroyed 鉤子被成功運(yùn)行銷毀對象上調(diào)用。

image.png

概要

我們可以使用生命周期鉤子在Vue對象生命周期的不同階段添加我們的自定義代碼。它將幫助我們控制在DOM中創(chuàng)建對象時(shí)創(chuàng)建的流程,以及更新和刪除對象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,178評論 0 29
  • Vue 框架的入口就是 Vue 實(shí)例,其實(shí)就是框架中的 view model ,它包含頁面中的業(yè)務(wù) 處理邏輯、數(shù)據(jù)...
    云中一樵夫閱讀 1,163評論 0 1
  • 一:什么是閉包?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 10,051評論 1 52
  • Vue 實(shí)例中的生命周期鉤子 本博客版權(quán)歸本人和饑人谷所有,轉(zhuǎn)載需說明來源Vue 框架的入口就是 Vue 實(shí)例,其...
    饑人谷_小k閱讀 2,575評論 2 7
  • 歸來不見春無影,逝去惟聞泉有聲。 山色萬般皆畫盡,任憑多少入詩情。
    雪窗_武立之閱讀 386評論 2 2

友情鏈接更多精彩內(nèi)容