vue的生命週期

生命週期鉤子

生命週期鉤子api

  • 表示一個vue實例從建立到銷燬的這個過程,將這個過程的一些時間節點賦予了對應的鉤子函數
  • 鉤子函數: 知足特色條件被回調的方法
new Vue({
    el: "#app",
    data: {
        msg: "message"
    },
    beforeCreate () {
        console.log("實例剛剛建立");
        console.log(this.msg
                    
    },
    created () {
        console.log("實例建立成功, data, methods已擁有");
        console.log(this.msg);
    },
    mounted () {
        console.log("頁面已被vue實例渲染, data, methods已更新");
    }
    // 拿到需求 => 肯定鉤子函數 => 解決需求的邏輯代碼塊
})

生命週期

生命週期鉤子函數的使用

/** 組件的生命週期鉤子
     * 一個組件,會在頁面中渲染,也會銷燬存放到內存(不渲染) => 加載組件到銷燬組件
     * 從加載一個組件到銷燬該組件,整個生命週期中存在不少特殊的時間節點(組件要建立了,建立成功了,要加載了,加載成功了,
     * 要更新數據了,數據更新完畢了,要銷燬了,銷燬成功了),這些特殊的時間節點,vue都提供了對應的回調方法,來輔助完成在這些時間
     * 節點須要完成的業務邏輯
     *
     * 生命週期鉤子函數書寫的位置:鉤子直接做爲vue實例的成員
     *
     * 重點:一、書寫位置  二、每一個鉤子節點時的特性
     */
export default {
        name: "carDetail",
        data() {
            return {
                num: 10,
                car: {}
            }
        },
        methods: {
            backAction() {
                // go的參數是正負整數,表明歷史記錄前進或後退幾步
                this.$router.go(-1);
            }
        },
        beforeCreate() {
            window.console.log('該組件要被建立了');
            window.console.log(this.num);
        },
        // 最經常使用的鉤子函數:組件加載後,能夠請求後臺數據,更新組件數據;組件間路由傳參的值獲取
        created() {
            window.console.log('該組件已經建立了');
            window.console.log(this.num);

            // 獲取跳轉到詳情頁的當前書本id,再根據id得到書本的詳細信息
            // window.console.log(this.$router);  // $router管理路由跳轉的
            // window.console.log(this.$route);  // $route管理路由數據的
            let pk = this.$route.params.pk;
            // window.console.log(pk in {'1': 100, '2': 200});
            if (!(pk in cars_detail)) {
                this.$router.go(-1);  // 數據不存在,返回
            }
            this.car = cars_detail[pk];
        },
        destroyed() {
            window.console.log('該組件已經銷燬了')
        }
    }

生命週期鉤子函數

beforeCreate

在實例初始化以後,數據觀測(data observer)和 event/watcher 事件配置以前被調用。服務器

created

最經常使用的鉤子函數:組件加載後,能夠請求後臺數據,更新組件數據;組件間路由傳參的值獲取app

在實例建立完成後被當即調用。在這一步,實例已完成如下的配置:數據觀測(data observer)、屬性和方法的運算、watch/event 事件回調。然而,掛載階段還沒開始,$el 屬性目前不可見。函數

beforeMount

在掛載開始以前被調用,相關的 render 函數將首次被調用。this

注意:該鉤子在服務器端渲染期間不被調用。code

mounted

el 被新建立的 vm.el替換,並掛載到實例上去以後調用該鉤子。若是root實例掛載了一個文檔內元素,當mounted被調用時vm.el 也在文檔內。頁面渲染完成後初始化的處理均可以放在這裏。router

注意:mounted 不會承諾全部的子組件也都一塊兒被掛載。server

beforeUpdate

數據更新時調用,發生在虛擬 DOM 從新渲染和打補丁以前。blog

你能夠在這個鉤子中進一步地更改狀態,這不會觸發附加的重渲染過程。

updated

因爲數據更改致使的虛擬 DOM 從新渲染和打補丁,在這以後會調用該鉤子。

當這個鉤子被調用時,組件 DOM 已經更新,因此你如今能夠執行依賴於 DOM 的操做。然而在大多數狀況下,你應該避免在此期間更改狀態。若是要相應狀態改變,一般最好使用計算屬性或 watcher 取而代之。

注意:updated 不會承諾全部的子組件也都一塊兒被重繪。

activated

keep-alive 組件激活時調用。

deactivated

keep-alive 組件停用時調用。

beforeDestroy

實例銷燬以前調用。在這一步,實例仍然徹底可用。

destroyed

Vue 實例銷燬後調用。調用後,Vue 實例指示的全部東西都會解綁定,全部的事件監聽器會被移除,全部的子實例也會被銷燬。

生命週期圖示

相關文章
相關標籤/搜索