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

Vue的生命周期一起來看看

 更新時(shí)間:2022年02月24日 17:01:17   作者:Tree_wws  
這篇文章主要為大家詳細(xì)介紹了Vue的生命周期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. 生命周期(重要)

1.1 初步認(rèn)識生命周期

  • 別名:生命周期回調(diào)函數(shù)、生命周期函數(shù)、生命周期鉤子。
  • 生命周期是什么?Vue在關(guān)鍵時(shí)刻幫我們調(diào)用的一些特殊名稱的函數(shù)。
  • 生命周期函數(shù)的名字不可更改,但函數(shù)內(nèi)部的具體內(nèi)容由程序員自行編寫
  • 生命周期函數(shù)中的this指向也是vm 或 組件實(shí)例對象。

1.2 生命周期流程(8個(gè))

1.初始化

1.beforeCreate()

2.created()

2.掛載(頁面渲染)

1.beforeMount()

2.mounted()

3.更新

1.beforeUpdate()

2.updated()

4.銷毀

1.beforeDestory()

2.destoryed()

1.3 生命周期詳細(xì)流程圖

在這里插入圖片描述

1.4 常用的生命周期鉤子:

beforeCreate():可以配置全局事件總線,后面會(huì)講到先提一嘴

mounted(): 可以在此階段發(fā)送ajax請求, 啟動(dòng)定時(shí)器、綁定自定義事件、訂閱消息等異步任務(wù)【初始化操作】

beforeDestroy(): 在此階段做收尾工作, 如: 清除定時(shí)器、解綁自定義事件、取消訂閱消息等【首尾工作】

1.4.1 關(guān)于銷毀

  • 銷毀后借助Vue開發(fā)者工具看不到任何信息
  • 銷毀后自定義事件會(huì)失效,但原生DOM事件依然有效
  • 一般不會(huì)在beforeDestroy操作數(shù)據(jù),因?yàn)榧词共僮鲾?shù)據(jù),也不會(huì)再觸發(fā)更新流程了。

1.4.2 關(guān)于父子組件的生命周期 

1.加載渲染的過程

父beforeCreate ==> 父created ==> 父beforeMount ==> 子beforeCreate ==> 子created ==> 子beforeMount ==> 子mounted ==> 父mounted

2.更新的過程

父beforeUpdate ==> 子beforeUpdate ==> 子updated ==> 父updated

3.銷毀過程

父beforeDestroy ==> 子beforeDestroy ==> 子destroyed ==> 父destroyed

1.5小案例

 <div id="root">
        <!-- 讓h3透明度產(chǎn)生過渡的效果 -->
        <h3 :style="{opacity:opacity}">歡迎學(xué)習(xí)Vue!</h3>
        <button @click="des">點(diǎn)擊我銷毀</button>
    </div>
    <script>
        Vue.config.productionTip = false
        let vm = new Vue({
            el: '#root',
            data: {
                opacity: 1
            },
            methods: {  
                des(){
                    // 觸發(fā)此函數(shù)必定調(diào)用,beforeDestroy(),destroyed()
                    this.$destroy()
                }
            },
            mounted() { //掛載
                /*
                		- 完成模板解析后并且將初始的真實(shí)的DOM元素掛載到頁面后,才執(zhí)行的函數(shù)
                			只會(huì)執(zhí)行一次
                		- this指向Vue
                		- 開發(fā)中常用的方法,當(dāng)我們想要讀取某個(gè)屬性但是讀不到,就可以
                		  將該屬性綁定到共同能夠訪問到的元素上,例如下面定時(shí)器的例子
                */
                this.timer = setInterval(() => {
                    this.opacity -= 0.01
                    if (this.opacity <= 0)
                        this.opacity = 1
                }, 10);
            },
            beforeDestroy() {
                console.log("beforeDestroy - 清除定時(shí)器");
                clearInterval(this.timer)
            },
            destroyed() {
                console.log("destroyed - 銷毀完畢")
            },
        })
    </script>

1.6 代碼舉例說明生命周期鉤子

  <div id="root">
        <h3>n的值為:{{n}}</h3>
        <button @click="add">點(diǎn)擊我n+1</button>
        <button @click="remove">點(diǎn)擊銷毀vm</button>
    </div>
    <script>
        Vue.config.productionTip = false
        let vm = new Vue({
            el: '#root',
            data: {
                n:1
            },
            methods: {
                add(){
                    this.n++
                },
                remove(){
                    this.$destroy()
                }
            },
            beforeCreate() {
                /* 
                    此時(shí)初始化生命周期,事件等,數(shù)據(jù)代理還未開始
                    vm無法訪問到data中的數(shù)據(jù),methods中的方法
                */
                console.log("beforeCreate");
                //console.log(this.n);  //undefined
                // console.log(this.add()); // this.add is not a function
                // debugger
            },
            created() {
                /* 
                    已經(jīng)完成了初始化的數(shù)據(jù)監(jiān)視和數(shù)據(jù)代理
                    vm可以訪問到data中的數(shù)據(jù)和methods的方法
                */
                console.log("created");
                // console.log(this.n);  // 1
                // console.log(this.add());  // undefined
                // debugger
            },
            beforeMount() {
                /*
                    掛載之前,也就是圖中的判斷框里執(zhí)行的,此階段是Vue
                    在解析模板并且生成虛擬DOM存儲(chǔ)在內(nèi)存當(dāng)中,頁面還不能
                    看到解析后的樣子
                 */
                 console.log("beforeMount");
                //  debugger
            },
            mounted() {
                /* 
                    完成模板解析后并且將初始的真實(shí)的DOM元素掛載到頁面后,才執(zhí)行的函數(shù)
                    一般在此:開啟一些定時(shí)器、發(fā)送網(wǎng)絡(luò)請求、訂閱消息、
                    綁定自定義事件等等初始化
                 */
                console.log("mounted");
                // debugger
            },
            beforeUpdate() {
                /* 
                    當(dāng)數(shù)據(jù)發(fā)生更新后,此時(shí)數(shù)據(jù)已經(jīng)更新完成,但是頁面
                    還是未更新的。
                    也就是面試所問的:頁面和尚未和數(shù)據(jù)保持同步的階段
                 */
                console.log("beforeUpdate");
            },
            updated() {
                /* 
                    在這之前會(huì)進(jìn)行新舊虛擬DOM比較,最終完成頁面的更新
                    此階段就是頁面和數(shù)據(jù)保持同步
                 */
                 console.log("updated");
            },
            beforeDestroy() {
                /* 
                    當(dāng)我們調(diào)用vm.$destroy時(shí),才會(huì)執(zhí)行下面兩個(gè)函數(shù),
                    馬上要執(zhí)行銷毀階段,一般在這個(gè)階段做一些收尾操作
                    比如:關(guān)掉定時(shí)器,取消訂閱,解綁自定義事件
                 */
                console.log("beforeDestroy");
            },
            destroyed() {
                /*
                    所有的指令,所有的自定義事件監(jiān)聽器都沒了(只留下原生的dom的事件)
                 */
                console.log("destroyed");
            },
        })
    </script>

總結(jié)

以上就是今天要講的內(nèi)容,本文介紹了生命周期的相關(guān)知識,希望對大家有所幫助!

相關(guān)文章

  • Vue項(xiàng)目業(yè)務(wù)邏輯模塊介紹

    Vue項(xiàng)目業(yè)務(wù)邏輯模塊介紹

    這篇文章主要介紹了Vue項(xiàng)目業(yè)務(wù)邏輯,不同的項(xiàng)目有不同的功能,不同的功能需要不同的實(shí)現(xiàn),實(shí)現(xiàn)這些核心功能的代碼就叫業(yè)務(wù)邏輯。所以說業(yè)務(wù)邏輯是指一個(gè)實(shí)體單元為了向另一個(gè)實(shí)體單元提供服務(wù),應(yīng)該具備的規(guī)則與流程
    2022-11-11
  • Vue項(xiàng)目中Element UI組件未注冊的問題原因及解決方法

    Vue項(xiàng)目中Element UI組件未注冊的問題原因及解決方法

    在 Vue 項(xiàng)目中使用 Element UI 組件庫時(shí),開發(fā)者可能會(huì)遇到一些常見問題,例如組件未正確注冊導(dǎo)致的警告或錯(cuò)誤,本文將詳細(xì)探討這些問題的原因、解決方法,以及如何在需要時(shí)撤銷相關(guān)操作,需要的朋友可以參考下
    2025-01-01
  • 粘貼可用的element-ui validateField局部校驗(yàn)

    粘貼可用的element-ui validateField局部校驗(yàn)

    這篇文章主要為大家介紹了粘貼可用element-ui中validateField局部校驗(yàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • element step組件在另一側(cè)加時(shí)間軸顯示

    element step組件在另一側(cè)加時(shí)間軸顯示

    本文主要介紹了element step組件在另一側(cè)加時(shí)間軸顯示,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • vue+elementUI實(shí)現(xiàn)圖片上傳功能

    vue+elementUI實(shí)現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue+elementUI實(shí)現(xiàn)圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • validate?注冊頁的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解

    validate?注冊頁的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了validate?注冊頁的表單數(shù)據(jù)校驗(yàn)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Vue中key的具體使用

    Vue中key的具體使用

    在vue中,key是dom對象的標(biāo)識,本文主要介紹了Vue中key的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Vue中v-if、v-if-else、v-else-if與v-show的基本使用

    Vue中v-if、v-if-else、v-else-if與v-show的基本使用

    v-if,v-else,v-else-if,v-if指令用于條件性地渲染一塊內(nèi)容,這塊內(nèi)容只會(huì)在指令的表達(dá)式返回truth值的時(shí)候被渲染,這篇文章主要給大家介紹了關(guān)于Vue中v-if、v-if-else、v-else-if與v-show的基本使用,需要的朋友可以參考下
    2022-10-10
  • vue父子組件之間的傳參的幾種方式小結(jié)

    vue父子組件之間的傳參的幾種方式小結(jié)

    本文主要介紹了vue父子組件之間的傳參的幾種方式小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • vue?為什么要封裝全局組件引入

    vue?為什么要封裝全局組件引入

    這篇文章主要介紹了vue為什么要封裝全局組件引入,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-07-07

最新評論

天祝| 太原市| 德安县| 盐山县| 射阳县| 宜兰市| 孟连| 潮州市| 陆良县| 泽库县| 康乐县| 襄垣县| 陇西县| 沿河| 赤城县| 迭部县| 蒙山县| 磐安县| 皋兰县| 定西市| 韶山市| 固安县| 乐山市| 武邑县| 宝兴县| 海安县| 水城县| 宣威市| 大宁县| 炉霍县| 通榆县| 涪陵区| 中西区| 南澳县| 平罗县| 汝城县| 托克逊县| 四平市| 平果县| 馆陶县| 三亚市|