Vue生命周期

Vue实例的生命周期

  什么是生命周期:从Vue实例创建 运行 到销毁期间,总是伴随这各种各样的事件,这些事件统称为生命周期

  生命周期钩子:就是生命周期事件的函数

  主要的生命周期函数分类:

      创建期:beforeCreate  Created beforeMount  Mounted

      运行期: beforeUpdata Udated

      销毁期:beforeDestroy  Destroyed 

<body>
    <div class="box">
        <input type="button" value="修改wenben" @click="wenben='NO'">
        <h2 id="b">{{wenben}}</h2>
    </div>
    <script>
        //创建Vue实例 等到viewmodel
        var vm=new Vue({
            el:'.box',
            data:{
                wenben:'OK'
            },
            methods: {
                show(){
                    console.log('接受到了这个信息');
                    
                }
            },

            beforeCreate() { // 这是我们遇到的第一个生命周期函数,表示实例完全被创建出来之前,会执行它
            //    console.log(this.wenben);    //返回 not a defined
            //    console.log(this.show());   //返回 not defined
                // 注意:在beforCreate 生命周期函数执行的时候,data和methods的数据还没有被初始化
                
            },
            created() {   //这是第二个生命周期函数,可想而知  Created  过去式  已经创建好了实例
              //  console.log(this.wenben);    //返回OK  
              //  console.log(this.show());    //返回  函数中的 字符串
                 //  在 created 中,data 和 methods 都已经被初始化好了!
                 // 如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作
                
                
            },
            beforeMount() {  //这是第三个生命周期函数 (挂载之前) 表示 模板已经在内存中编辑完成了,但是还没有渲染到页面中
              
                 // console.log(document.getElementById('b').innerText);   //返回 {{wenben}}
            // 在 beforeMount 执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串
                
            },
            mounted() {  //这是第四个生命周期函数 (挂载)表示,内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了
                //console.log(document.getElementById('b').innerText);  //返回OK
                // 注意: mounted 是 实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,此时,
                //如果没有其它操作的话,这个实例,就静静的 躺在我们的内存中,一动不动
            },


            // 接下来是我们运行中的两个生命周期函数
            beforeUpdate() {   //这是第五个生命周期函数 (更新之前) 表示页面还没有被更新[数据更新了吗?肯定更新了]
              //  console.log(document.getElementById('b').innerText);   //没有返回任何东西
                //首先更新数据前,需要添加一个事件,当点击了  数据就改变,这样我们才能接受到brforeUpdata函数的返回
                //console.log('页面中的元素'+document.getElementById('b').innerText);  //返回  页面中的元素OK
                //console.log('data中的数据'+this.wenben);        //返回 data中的数据NO
                // 得出结论: 当执行 beforeUpdate 的时候,页面中的显示的数据,还是旧的,此时 data 数据是最新的,页面尚未和 最新的数据保持同步
                
            },
            updated() { //这个是生命周期的第六个函数 (更新后) 
                console.log('界面上元素的内容:' + document.getElementById('b').innerText)   //返回  页面中的元素内容 NO
                console.log('data 中的 msg 数据是:' + this.wenben)             //返回data中的数据NO
                //Updata函数执行的时候,data中的数据和页面中的数据保持同步,都是最新的。
            },

            // beforDestroy  和Destroyed  是最后的销毁生命周期函数,这里不好演示

            //1.。beforeDestroy: 当执行这个函数的时候,实例就已经从运行杰顿,进入到了销毁阶段  实例身上所有的data和所有的methods以及过滤器啊 指令啊
            //都处于可用状态 还没真正执行销毁状态

            //2.。Destroy  当执行这个函数的时候,实例就已经完全销毁了,此时 实例中所有的数据,方法,过滤 等等都已经不可用了。e

        });
    
    </script>
原文地址:https://www.cnblogs.com/xiaowie/p/11608751.html