美文网首页vue ech...
vue笔记-07(vue实例的生命周期)

vue笔记-07(vue实例的生命周期)

作者: 7ColorLotus | 来源:发表于2020-05-08 19:04 被阅读0次
    • 什么是生命周期:从VUE实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期
      • 生命周期钩子:就是生命周期事件的别名而已
      • 生命周期钩子=生命周期函数=生命周期事件
      • 主要的生命周期函数分类:
        • 创建期间的生命周期函数:
          1)beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好data和methods属性
          2)created:实例已经在内存中创建好,此时data和methods也已经创建好,此时还没有开始编译模板
          3)beforeMount:此时已经在内存中完成了模板的编译,但是还没有渲染到页面中
          4)mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示,到此,实例就已经被完全的创建好了
        • 运行期间的生命周期函数:
          1)beforeUpdate:状态更新之前执行此函数,此时data中的状态值是最新的,但是界面上显示的数据还是旧的,因为此时还没有开始重新渲染DOM节点
          2)updated:实例更新完毕之后调用此函数,此时data中的状态值和界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了
        • 销毁期间的生命周期函数:
          1)beforeDestory:实例销毁之前调用,在这一步,实例仍然完全可用,还没有执行真正的销毁过程
          2)destroyed:Vue实例销毁后调用,调用后,Vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
        • 生命周期流程图


          lifecycle.png
        • 生命周期流程函数演示代码
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>生命周期函数演示</title>
            <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
        </head>
        <body>
        <div id="app">
            <div id="msg">{{ msg }}</div>
            <input type="button" value="change" @click="changeMsg()">
        </div>
        
        <script>
            var vm = new Vue({
                el:"#app",
                data: {
                    msg : 'hello'
                },
                methods:{
                    sayHi(){
                        console.log("hi, vue!!")
                    },
                    changeMsg(){
                        this.msg = 'bye'
                    }
                },
                beforeCreate: function(){ //data和methods还没有构建初始化好
                    // console.log(this.msg) //异常无法正常调用
                    // this.sayHi() // 异常 无法正常调用
                },
                created(){ //vue 在内存中创建好了
                    // console.log(this.msg) //可以正常调用
                    // this.sayHi() // 可以正常调用
                },
                beforeMount(){//编译好模板前
                    // console.log(document.getElementById("msg").innerText) //无法正常获取,还没有编译模板
                },
                mounted(){//已经编译好模板,vue实例就已经被完全的创建好了
                    // console.log(document.getElementById("msg").innerText) //能够正常显示,
                },
                beforeUpdate(){ //状态更新之前执行此函数
                    // console.log(this.msg) //点修button调用changeMsg方法后,vm对象中的msg为新数据
                    // console.log(document.getElementById("msg").innerText) ////点修button调用changeMsg方法后,页面上显示数据还是老数据
                },
                updated(){//状态更新之后执行此函数
                    // console.log(this.msg) //点修button调用changeMsg方法后,vm对象中的msg为新数据
                    // console.log(document.getElementById("msg").innerText) ////点修button调用changeMsg方法后,页面上显示数据改为新数据
                },
                beforeDestory(){ //实例销毁前,实例中的所有数据和方法依然是可用的状态
                    //不好演示
                },
                destroyed(){ //实例完全被销毁后调用,实例中的所有数据和方法已经是不可用的状态
                    //不好演示
                }
        
            })
        </script>
        </body>
        </html>
        

    相关文章

      网友评论

        本文标题:vue笔记-07(vue实例的生命周期)

        本文链接:https://www.haomeiwen.com/subject/azjqnhtx.html