溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Vue生命周期鉤子是什么及怎么使用

發(fā)布時(shí)間:2022-10-21 15:45:37 來源:億速云 閱讀:154 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Vue生命周期鉤子是什么及怎么使用”,在日常操作中,相信很多人在Vue生命周期鉤子是什么及怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”Vue生命周期鉤子是什么及怎么使用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

生命周期鉤子

Vue 在生命周期鉤子方面有兩種范式。一種是 Vue3 中引入的組合式API(Composition API),另一種是Vue2 中選項(xiàng)式API(Options API) ,它是定義 Vue 組件的原型模式。在本指南中,將從選項(xiàng)式API(Options API)開始,然后以此為基礎(chǔ)來展示組合式API(Composition API)中的工作原理。

選項(xiàng)式API(Options API)

選項(xiàng)式API(Options API)是 Vue2 的范式,如下代碼所示:

export default {
    name: "DevPoint",
    data() {
        return {
            phoneNumber: "13566666666",
        };
    },
    mounted() {},
};

運(yùn)行生命周期掛鉤

要使用選項(xiàng)式API(Options API)運(yùn)行任何生命周期掛鉤,可以將其添加到 Javascript 原型中。例如,如果使用 beforeCreate(),在檢測(cè)到新組件后觸發(fā)的第一個(gè)鉤子,可以像這樣添加它:

export default {
    name: "DevPoint",
    data() {
        return {
            someData: "20220609",
        };
    },
    mounted() {},
};

上面已經(jīng)展示了不同鉤子發(fā)生的時(shí)機(jī),接下來介紹各個(gè)鉤子各自做了什么,具體什么情況下觸發(fā)。

beforeCreate()

在組件初始化時(shí)調(diào)用,data()computed 屬性此時(shí)不可用。它對(duì)于調(diào)用不操作組件數(shù)據(jù)的 API 非常有用。如果 data() 在這個(gè)鉤子里面更新,一旦選項(xiàng)式API(Options API)加載完,更新將會(huì)將會(huì)丟失,變得無效。

created()

在實(shí)例處理完所有狀態(tài)操作后調(diào)用,可以訪問響應(yīng)式數(shù)據(jù)、computed 屬性、methodswatch。$el 是 Vue 存儲(chǔ)組件 HTML 的變量,在這個(gè)鉤子中還不可用,因?yàn)榇藭r(shí)還沒有創(chuàng)建 DOM 元素。如果需要觸發(fā) API 等不操作DOM元素的操作或者更新 data()則可以在這里進(jìn)行。

beforeMount()

這個(gè)鉤子在渲染發(fā)生之前會(huì)被執(zhí)行。模板已編譯,因此它存儲(chǔ)在內(nèi)存中,但尚未附加到頁面,尚未創(chuàng)建任何 DOM 元素,因此 $el 在這個(gè)階段仍然不可用。

mounted()

組件已安裝并顯示在頁面上, $el 可被正常使用,在此階段可以從 Vue 訪問和操作 DOM。這只會(huì)在所有子組件完全安裝后觸發(fā)。當(dāng)想在 DOM 加載后對(duì)其執(zhí)行某些操作時(shí),使用它很有用,比如可能更改其中的特定元素。

beforeUpdate()

有時(shí),會(huì)通過在watch 中更新數(shù)據(jù)或通過用戶交互來更改 Vue 組件中的數(shù)據(jù)。當(dāng)更改 data() 或?qū)е陆M件重新渲染時(shí),將觸發(fā)更新事件。在DOM重新渲染發(fā)生之前,beforeUpdate() 將立即觸發(fā)。在此事件之后,組件將重新渲染并使用最新數(shù)據(jù)進(jìn)行更新??梢允褂眠@個(gè)鉤子來訪問 DOM 的當(dāng)前狀態(tài),甚至可以更新 data() 。

updated()

觸發(fā)更新后,并且 DOM 已更新以最新數(shù)據(jù)重新渲染后,updated() 將觸發(fā)。這是在重新渲染后立即發(fā)生。現(xiàn)在,如果訪問$el DOM 內(nèi)容或其他任何有關(guān) DOM 內(nèi)容的內(nèi)容,它將顯示新的、重新渲染后的版本。如果有父組件,updated() 則首先調(diào)用子組件,然后調(diào)用父 updated() 掛鉤。

beforeUnmount()

如果一個(gè)組件被移除,那么它就會(huì)被卸載。在組件被完全移除之前,beforeUnmount() 觸發(fā)。此事件仍然可以訪問 DOM 元素以及與組件有關(guān)的任何其他內(nèi)容。這在刪除事件中很有用,例如,可以使用此事件通知服務(wù)器用戶已刪除表中的節(jié)點(diǎn)。如果需要使用它們,仍然可以訪問 this.$el,以及 data() 、methodswatch。

unmount()

一旦完全刪除,unmount() 事件就會(huì)觸發(fā)。這可用于清理其他數(shù)據(jù)或事件偵聽器或定時(shí)器,以讓知道該組件不再存在于頁面上。如果需要使用它們,仍然可以訪問訪問 this.$el,以及 data() 、methodswatch

組合式API(Composition API)中的生命周期鉤子

如果習(xí)慣使用選項(xiàng)式API(Options API),上面的鉤子會(huì)很有意義。如果主要使用 Vue 3,則需要習(xí)慣使用組合式API(Composition API)的風(fēng)格。組合式API(Composition API)是 選項(xiàng)式API(Options API) 的補(bǔ)充,但使用鉤子的方式略有不同。

setup() 替換 created() 和 beforeCreated()

在組合式API(Composition API)中,created()beforeCreated() 不可訪問。被替換為 setup() ,在 created()beforeCreated() 實(shí)現(xiàn)的邏輯完全可以遷移到 setup() 中。

鉤子可以與 setup() 一起使用

Hooks 可以與 setup() 一起使用,如下:

export default {
    name: "DevPoint",
    data() {
        return {
            someData: "20220609",
        };
    },
    setup() {
        console.log("setup");
    },
    mounted() {
        console.log(this.$el);
    },
};

但是,可能會(huì)看到這樣做的另一種方式是使用組合式 API 函數(shù)在 setup() 函數(shù)中定義掛鉤,如果需要這樣做,鉤子的命名會(huì)略有不同:

  • beforeMount() 改為 onBeforeMount()

  • mounted() 改為 onMounted()

  • beforeUpdate() 改為 onBeforeUpdate()

  • updated() 改為 onUpdated()

  • beforeUnmount() 改為 onBeforeUnmount()

  • unmounted() 改為 onUnmounted()

這些函數(shù)的作用與前面介紹描述的完全相同,但調(diào)用方式略有不同。所有這些鉤子都必須在 setup() 函數(shù)或設(shè)置腳本中調(diào)用。例如,必須在 setup 函數(shù)中運(yùn)行鉤子,如下所示:

export default {
    setup() {
        // 所有鉤子的邏輯代碼在這里
    },
};

或者如下:

<script setup>
// 所有鉤子的邏輯代碼在這里
</script>

因此,如果想使用這種方法調(diào)用鉤子,大概代碼如下:

<script>
export default {
    setup() {
        // 所有鉤子邏輯
        onBeforeMount(() => {
            //  beforeMount() 邏輯
        });
        onBeforeUpdate(() => {
            // beforeUpdate() 邏輯
        });
    },
};
</script>

到此,關(guān)于“Vue生命周期鉤子是什么及怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI