vue生命周期钩子函数详细示例代码GIF动态图解释

Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期

1、 页面渲染期

beforeCreate()  created()   页面创建之前 / 完成

beforeMount()  mounted() 页面挂载之前 / 完成

2、页面更新期

beforeUpdate()  updated()  页面更新之前 / 完成

3、页面销毁

beforeDestroy()  destroyed()  页面销毁之前  /  完成

动态演示图

注意:当你销毁vue实例后,再去挂载,你会发现,页面更新期钩子函数失效了

vue生命周期钩子函数演示@JackieDYH

 

实例代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- <script src="../node_modules/vue/dist/vue.js"></script> -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" v-model="msg">
        <p>{{ msg }}</p>
    </div>
    <button class="destroy">销毁</button>
    <button class="mount">挂载</button>
    <script>
        let vm = new Vue({
            el:'#app',
            data:{
                msg:"vue生命周期"
            },
            // 1执行顺序和声明顺序无关
            //页面渲染期
            beforeCreate(){
                console.log('--------beforeCreate 创建之前--------');
                console.log('$el:',this.$el);//undefined
                console.log('$data:',this.$data);//undefined
                console.log('this.msg:',this.msg);//undefined
            },
            created(){
                console.log('--------created 创建完成--------');
                console.log('$el:',this.$el);//undefined
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            beforeMount(){
                console.log('--------beforeMount 挂载之前--------');
                console.log('$el:',this.$el);//<div id="app">.值还没有解析.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            mounted(){
                console.log('--------mounted 挂载完成--------');
                console.log('$el:',this.$el);//<div id="app">.已经解析成data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            // 2页面更新期
            beforeUpdate(){
                console.log('--------beforeUpdate 更新之前--------');
                console.log('$el:',this.$el);//<div id="app">.已经更新成data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期更新了
            },
            updated(){
                console.log('--------updated 更新完成--------');
                console.log('$el:',this.$el);//<div id="app">.已经更新成data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期更新了
            },
            // 3页面销毁
            beforeDestroy(){
                console.log('--------beforeDestroy 销毁之前--------');
                console.log('$el:',this.$el);//<div id="app">.data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            },
            destroyed(){
                console.log('--------destroyed 销毁完成--------');
                console.log('$el:',this.$el);//<div id="app">.data中对应值.</div>
                console.log('$data:',this.$data);//Object
                console.log('this.msg:',this.msg);//vue生命周期
            }
        });
        // console.log(vm);
        const desBtn = document.querySelector(".destroy");
        const mouBtn = document.querySelector(".mount");
        desBtn.onclick = function(){
            vm.$destroy();//销毁vue实例
        }
        mouBtn.onclick = function(){
            vm.$mount();//挂载vue实例 但 更新周期 不会执行了
        }
    </script>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章