欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue的生命周期一起來看看

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

1. 生命周期(重要)

1.1 初步認識生命周期

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

1.2 生命周期流程(8個)

1.初始化

1.beforeCreate()

2.created()

2.掛載(頁面渲染)

1.beforeMount()

2.mounted()

3.更新

1.beforeUpdate()

2.updated()

4.銷毀

1.beforeDestory()

2.destoryed()

1.3 生命周期詳細流程圖

在這里插入圖片描述

1.4 常用的生命周期鉤子:

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

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

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

1.4.1 關于銷毀

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

1.4.2 關于父子組件的生命周期 

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}">歡迎學習Vue!</h3>
        <button @click="des">點擊我銷毀</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() { //掛載
                /*
                		- 完成模板解析后并且將初始的真實的DOM元素掛載到頁面后,才執(zhí)行的函數(shù)
                			只會執(zhí)行一次
                		- this指向Vue
                		- 開發(fā)中常用的方法,當我們想要讀取某個屬性但是讀不到,就可以
                		  將該屬性綁定到共同能夠訪問到的元素上,例如下面定時器的例子
                */
                this.timer = setInterval(() => {
                    this.opacity -= 0.01
                    if (this.opacity <= 0)
                        this.opacity = 1
                }, 10);
            },
            beforeDestroy() {
                console.log("beforeDestroy - 清除定時器");
                clearInterval(this.timer)
            },
            destroyed() {
                console.log("destroyed - 銷毀完畢")
            },
        })
    </script>

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

  <div id="root">
        <h3>n的值為:{{n}}</h3>
        <button @click="add">點擊我n+1</button>
        <button @click="remove">點擊銷毀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ù)據(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存儲在內(nèi)存當中,頁面還不能
                    看到解析后的樣子
                 */
                 console.log("beforeMount");
                //  debugger
            },
            mounted() {
                /* 
                    完成模板解析后并且將初始的真實的DOM元素掛載到頁面后,才執(zhí)行的函數(shù)
                    一般在此:開啟一些定時器、發(fā)送網(wǎng)絡請求、訂閱消息、
                    綁定自定義事件等等初始化
                 */
                console.log("mounted");
                // debugger
            },
            beforeUpdate() {
                /* 
                    當數(shù)據(jù)發(fā)生更新后,此時數(shù)據(jù)已經(jīng)更新完成,但是頁面
                    還是未更新的。
                    也就是面試所問的:頁面和尚未和數(shù)據(jù)保持同步的階段
                 */
                console.log("beforeUpdate");
            },
            updated() {
                /* 
                    在這之前會進行新舊虛擬DOM比較,最終完成頁面的更新
                    此階段就是頁面和數(shù)據(jù)保持同步
                 */
                 console.log("updated");
            },
            beforeDestroy() {
                /* 
                    當我們調(diào)用vm.$destroy時,才會執(zhí)行下面兩個函數(shù),
                    馬上要執(zhí)行銷毀階段,一般在這個階段做一些收尾操作
                    比如:關掉定時器,取消訂閱,解綁自定義事件
                 */
                console.log("beforeDestroy");
            },
            destroyed() {
                /*
                    所有的指令,所有的自定義事件監(jiān)聽器都沒了(只留下原生的dom的事件)
                 */
                console.log("destroyed");
            },
        })
    </script>

總結(jié)

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

相關文章

  • vue通過style或者class改變樣式的實例代碼

    vue通過style或者class改變樣式的實例代碼

    這篇文章主要介紹了vue通過style或者class改變樣式的實例代碼,在文中給大家提到了vue的一些樣式(class/style)綁定,需要的朋友可以參考下
    2018-10-10
  • Vue+NodeJS實現(xiàn)大文件上傳的示例代碼

    Vue+NodeJS實現(xiàn)大文件上傳的示例代碼

    常見的文件上傳方式可能就是new一個FormData,把文件append進去以后post給后端就可以了。但如果采用這種方式來上傳大文件就很容易產(chǎn)生上傳超時的問題。所以本文將利用Vue+NodeJS實現(xiàn)大文件上傳,需要的可以參考一下
    2022-05-05
  • vue3中的watch()的用法和具體作用

    vue3中的watch()的用法和具體作用

    這篇文章主要介紹了vue3中的watch()的用法和具體作用,通過合理和熟練使用watch()方法,開發(fā)者可以更加高效地完成前端開發(fā)工作,需要的朋友可以參考下
    2023-04-04
  • 解決Vue+SpringBoot+Shiro跨域問題

    解決Vue+SpringBoot+Shiro跨域問題

    本文將結(jié)合實例代碼,解決Vue+SpringBoot+Shiro跨域問題,相信大家剛開始做都會遇到這個問題,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • Vue2和Vue3的10種組件通信方式梳理

    Vue2和Vue3的10種組件通信方式梳理

    這篇文章主要介紹了Vue2和Vue3的10種組件通信方式梳理,本文將通過選項式API?組合式API以及setup三種不同實現(xiàn)方式全面介紹Vue2和Vue3的組件通信方式,需要的朋友可以參考一下
    2022-08-08
  • vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    vue3.0中使用Element-Plus中Select下的filter-method屬性代碼示例

    這篇文章主要給大家介紹了關于vue3.0中使用Element-Plus中Select下的filter-method屬性的相關資料,Filter-method用法是指從一組數(shù)據(jù)中選擇滿足條件的項,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Vue3中響應式解構(gòu)props的使用

    Vue3中響應式解構(gòu)props的使用

    本文主要介紹了Vue3中響應式解構(gòu)props的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • Vue2.0用戶權(quán)限控制解決方案的示例

    Vue2.0用戶權(quán)限控制解決方案的示例

    本篇文章主要介紹了Vue2.0用戶權(quán)限控制解決方案的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 解讀vant的Uploader上傳問題

    解讀vant的Uploader上傳問題

    這篇文章主要介紹了解讀vant的Uploader上傳問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue-router(this.$router)如何在新窗口打開路由跳轉(zhuǎn)頁面

    vue-router(this.$router)如何在新窗口打開路由跳轉(zhuǎn)頁面

    這篇文章主要介紹了vue-router(this.$router)如何在新窗口打開路由跳轉(zhuǎn)頁面問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論