最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

帶你一文了解Vue生命周期鉤子

 更新時間:2022年06月11日 16:50:01   作者:天行無忌  
生命周期鉤子又被叫做生命周期時間,生命周期函數(shù),生命周期鉤子就是vue生命周期中出發(fā)的各類事件,這些事件被稱為生命周期鉤子,下面這篇文章主要給大家介紹了關(guān)于Vue生命周期鉤子的相關(guān)資料,需要的朋友可以參考下

前言

和其他框架一樣,Vue 有許多生命周期鉤子,它們允許將代碼附加到在創(chuàng)建或使用 Vue 應(yīng)用程序時發(fā)生的特定事件,如當組件加載時、當組件被添加到 DOM 時或者當某些東西被刪除時。

Vue 有很多生命周期鉤子,令人困惑的是每個鉤子的含義或作用。在本指南中,將介紹每個生命周期掛鉤的作用以及如何使用它們。

生命周期鉤子

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

選項式API(Options API)

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

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

生命周期流程圖

要了解每個生命周期掛鉤何時觸發(fā),下圖描述了每個生命周期掛鉤何時觸發(fā)。

運行生命周期掛鉤

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

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

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

beforeCreate()

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

created()

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

beforeMount()

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

mounted()

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

beforeUpdate()

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

updated()

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

beforeUnmount()

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

unmount()

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

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

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

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

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

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

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

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

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

  • beforeMount() 改為 onBeforeMount()
  • mounted() 改為 onMounted()
  • beforeUpdate() 改為 onBeforeUpdate()
  • updated() 改為 onUpdated()
  • beforeUnmount() 改為 onBeforeUnmount()
  • unmounted() 改為 onUnmounted()

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

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

或者如下:

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

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

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

總結(jié)

Vue 生命周期相當復(fù)雜,但它為前端開發(fā)提供了很多工具來運行代碼、更新數(shù)據(jù)并確保組件以想要的方式顯示。

到此這篇關(guān)于Vue生命周期鉤子的文章就介紹到這了,更多相關(guān)Vue生命周期鉤子內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue高級組件之函數(shù)式組件的使用場景與源碼分析

    Vue高級組件之函數(shù)式組件的使用場景與源碼分析

    Vue提供了一種稱為函數(shù)式組件的組件類型,用來定義那些沒有響應(yīng)數(shù)據(jù),也不需要有任何生命周期的場景,它只接受一些props來顯示組件,下面這篇文章主要給大家介紹了關(guān)于Vue高級組件之函數(shù)式組件的使用場景與源碼分析的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • vue3如何添加eslint校驗(eslint-plugin-vue)

    vue3如何添加eslint校驗(eslint-plugin-vue)

    這篇文章主要介紹了vue3如何添加eslint校驗(eslint-plugin-vue),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • vue根據(jù)進入的路由進行原路返回的方法

    vue根據(jù)進入的路由進行原路返回的方法

    今天小編就為大家分享一篇vue根據(jù)進入的路由進行原路返回的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 解決vue中l(wèi)ess的使用問題

    解決vue中l(wèi)ess的使用問題

    這篇文章主要介紹了解決vue中l(wèi)ess的使用問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Vue組件二次封裝的一些實用技巧總結(jié)

    Vue組件二次封裝的一些實用技巧總結(jié)

    我們在做項目經(jīng)常會遇到組件功能不能滿足業(yè)務(wù)需求的時候,這時候需要在原有的組件上進行二次封裝,下面這篇文章主要給大家介紹了關(guān)于Vue組件二次封裝的一些實用技巧,需要的朋友可以參考下
    2022-04-04
  • Vue如何優(yōu)雅的清除定時器

    Vue如何優(yōu)雅的清除定時器

    定時器如果不及時合理地清除,會造成業(yè)務(wù)邏輯混亂甚至應(yīng)用卡死的情況,這個時就需要清除定時器,本文就介紹了Vue如何優(yōu)雅的清除定時器,感興趣的可以了解一下
    2021-07-07
  • 詳解element-ui日期時間選擇器的日期格式化問題

    詳解element-ui日期時間選擇器的日期格式化問題

    這篇文章主要介紹了詳解element-ui日期時間選擇器的日期格式化問題,本文用到了DateTimePicker來選擇日期時間,但是在將數(shù)據(jù)傳回后臺的過程中遇到了一些令人頭疼的問題,有興趣的一起來了解一下
    2019-04-04
  • Vue實現(xiàn)調(diào)節(jié)窗口大小時觸發(fā)事件動態(tài)調(diào)節(jié)更新組件尺寸的方法

    Vue實現(xiàn)調(diào)節(jié)窗口大小時觸發(fā)事件動態(tài)調(diào)節(jié)更新組件尺寸的方法

    今天小編就為大家分享一篇Vue實現(xiàn)調(diào)節(jié)窗口大小時觸發(fā)事件動態(tài)調(diào)節(jié)更新組件尺寸的方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue 自定義提示框(Toast)組件的實現(xiàn)代碼

    vue 自定義提示框(Toast)組件的實現(xiàn)代碼

    這篇文章主要介紹了vue 自定義提示框(Toast)組件的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue 實現(xiàn)把路由單獨分離出來

    vue 實現(xiàn)把路由單獨分離出來

    這篇文章主要介紹了vue 實現(xiàn)把路由單獨分離出來,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

云阳县| 竹溪县| 杨浦区| 寿宁县| 读书| 宁化县| 紫阳县| 沧源| 奉新县| 清水县| 开江县| 宜昌市| 四川省| 嘉荫县| 绥芬河市| 新建县| 龙江县| 鞍山市| 克什克腾旗| 乐亭县| 武邑县| 筠连县| 云霄县| 肃南| 永兴县| 阜平县| 维西| 普陀区| 宁远县| 田林县| 滦平县| 桂阳县| 民权县| 大理市| 柳河县| 隆回县| 宁乡县| 林芝县| 铁岭市| 灌云县| 张北县|