中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue生命周期的相關知識點有哪些

發布時間:2022-02-25 09:22:19 來源:億速云 閱讀:119 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Vue生命周期的相關知識點有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Vue生命周期的相關知識點有哪些”這篇文章吧。

    1. 生命周期(重要)

    1.1 初步認識生命周期

    • 別名:生命周期回調函數、生命周期函數、生命周期鉤子。

    • 生命周期是什么?Vue在關鍵時刻幫我們調用的一些特殊名稱的函數。

    • 生命周期函數的名字不可更改,但函數內部的具體內容由程序員自行編寫

    • 生命周期函數中的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 生命周期詳細流程圖

    Vue生命周期的相關知識點有哪些

    1.4 常用的生命周期鉤子:

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

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

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

    1.4.1 關于銷毀
    • 銷毀后借助Vue開發者工具看不到任何信息

    • 銷毀后自定義事件會失效,但原生DOM事件依然有效

    • 一般不會在beforeDestroy操作數據,因為即使操作數據,也不會再觸發更新流程了。

    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">
            <!-- 讓h4透明度產生過渡的效果 -->
            <h4 :>歡迎學習Vue!</h4>
            <button @click="des">點擊我銷毀</button>
        </div>
        <script>
            Vue.config.productionTip = false
            let vm = new Vue({
                el: '#root',
                data: {
                    opacity: 1
                },
                methods: {  
                    des(){
                        // 觸發此函數必定調用,beforeDestroy(),destroyed()
                        this.$destroy()
                    }
                },
                mounted() { //掛載
                    /*
                    		- 完成模板解析后并且將初始的真實的DOM元素掛載到頁面后,才執行的函數
                    			只會執行一次
                    		- this指向Vue
                    		- 開發中常用的方法,當我們想要讀取某個屬性但是讀不到,就可以
                    		  將該屬性綁定到共同能夠訪問到的元素上,例如下面定時器的例子
                    */
                    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">
            <h4>n的值為:{{n}}</h4>
            <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() {
                    /* 
                        此時初始化生命周期,事件等,數據代理還未開始
                        vm無法訪問到data中的數據,methods中的方法
                    */
                    console.log("beforeCreate");
                    //console.log(this.n);  //undefined
                    // console.log(this.add()); // this.add is not a function
                    // debugger
                },
                created() {
                    /* 
                        已經完成了初始化的數據監視和數據代理
                        vm可以訪問到data中的數據和methods的方法
                    */
                    console.log("created");
                    // console.log(this.n);  // 1
                    // console.log(this.add());  // undefined
                    // debugger
                },
                beforeMount() {
                    /*
                        掛載之前,也就是圖中的判斷框里執行的,此階段是Vue
                        在解析模板并且生成虛擬DOM存儲在內存當中,頁面還不能
                        看到解析后的樣子
                     */
                     console.log("beforeMount");
                    //  debugger
                },
                mounted() {
                    /* 
                        完成模板解析后并且將初始的真實的DOM元素掛載到頁面后,才執行的函數
                        一般在此:開啟一些定時器、發送網絡請求、訂閱消息、
                        綁定自定義事件等等初始化
                     */
                    console.log("mounted");
                    // debugger
                },
                beforeUpdate() {
                    /* 
                        當數據發生更新后,此時數據已經更新完成,但是頁面
                        還是未更新的。
                        也就是面試所問的:頁面和尚未和數據保持同步的階段
                     */
                    console.log("beforeUpdate");
                },
                updated() {
                    /* 
                        在這之前會進行新舊虛擬DOM比較,最終完成頁面的更新
                        此階段就是頁面和數據保持同步
                     */
                     console.log("updated");
                },
                beforeDestroy() {
                    /* 
                        當我們調用vm.$destroy時,才會執行下面兩個函數,
                        馬上要執行銷毀階段,一般在這個階段做一些收尾操作
                        比如:關掉定時器,取消訂閱,解綁自定義事件
                     */
                    console.log("beforeDestroy");
                },
                destroyed() {
                    /*
                        所有的指令,所有的自定義事件監聽器都沒了(只留下原生的dom的事件)
                     */
                    console.log("destroyed");
                },
            })
        </script>

    以上是“Vue生命周期的相關知識點有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    vue
    AI

    宜春市| 利津县| 林周县| 灵宝市| 拜城县| 嵩明县| 长兴县| 屯留县| 麻江县| 夏邑县| 浑源县| 南华县| 土默特左旗| 黎城县| 冷水江市| 昌平区| 巨野县| 大足县| 桐梓县| 准格尔旗| 旬邑县| 锦屏县| 同仁县| 车致| 辽宁省| 丰镇市| 乌恰县| 加查县| 长顺县| 石首市| 东丰县| 米林县| 泰兴市| 南投市| 大悟县| 蒙城县| 哈巴河县| 华容县| 玉树县| 九江县| 阿图什市|