采用实例演示Vue生命周期

Vue的生命周期


主要划分的时期为
1、before Create
2、created
3、before Mount
4、mounted
5、before Update
6、updated
7、before Destroy
8、destroyed
下面对这些时期一一分析

演示使用的Vue实例

var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },

before Create时期

        var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },
           beforeCreate() {
               console.log(this.msg);
               this.show();
               
           },

在这里插入图片描述
此时的msg属性是undefined同时报错说show不是一个函数说明此时
Vue实例刚从内存中被创建出来,此时还没有初始化好data和methods属性

created

        var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },
           beforeCreate() {
            //    console.log(this.msg);
            //    this.show();
               
           },
           created() {
                console.log(this.msg);
                this.show();
                console.log(document.getElementById('h3').innerText)
           },

在这里插入图片描述
可以看到这个时候data和methods已经创建好了调用是没有问题的,正常显示。但是此时还没有开始编译模板,所以此时显示的是没有加载好的模板{{msg}}。

before Mount

        var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },
           beforeCreate() {
            //    console.log(this.msg);
            //    this.show();
               
           },
           created() {
                // console.log(this.msg);
                // this.show();
                // console.log(document.getElementById('h3').innerText);
           },
           beforeMount() {
               console.log(document.getElementById('h3').innerText);
               
           },

在这里插入图片描述
此时已经完成了模板的编译但是还没有挂载到页面中所以此时显示的任然是模板而不是最后的ok

mounted

        var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },
           beforeCreate() {
            //    console.log(this.msg);
            //    this.show();
               
           },
           created() {
                // console.log(this.msg);
                // this.show();
                // console.log(document.getElementById('h3').innerText);
           },
           beforeMount() {
            //    console.log(document.getElementById('h3').innerText);
               
           },
           mounted() {
                console.log(document.getElementById('h3').innerText);
           },
           
        });

在这里插入图片描述
此时,已经将编译好了的模板挂载到了页面的指定的容器中显示所以此时显示的就是ok而不是{{msg}}

before Update

        var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },
           beforeCreate() {
            //    console.log(this.msg);
            //    this.show();
               
           },
           created() {
                // console.log(this.msg);
                // this.show();
                // console.log(document.getElementById('h3').innerText);
           },
           beforeMount() {
            //    console.log(document.getElementById('h3').innerText);
               
           },
           mounted() {
                console.log(document.getElementById('h3').innerText);
           },
           beforeUpdate() {
               console.log("界面上的msg:"+document.getElementById('h3').innerText);
               console.log("data中的数据msg:"+this.msg);
               
           },
           
        });

在这里插入图片描述
注意这个阶段和后面的update阶段都是属于页面运行中的生命周期,并且只有在页面数据发生改变时才会进入该阶段。可以看到此时页面的数据是ok而data中的数据为No,这是因为此时还没有开始重新加载DOM节点。

update

      var vm=new Vue({
           el:'#app',
           data:{
               msg:"ok"
           },
           methods:{
               show(){
                   console.log("执行show方法");                
               }
           },
           beforeCreate() {
            //    console.log(this.msg);
            //    this.show();
               
           },
           created() {
                // console.log(this.msg);
                // this.show();
                // console.log(document.getElementById('h3').innerText);
           },
           beforeMount() {
            //    console.log(document.getElementById('h3').innerText);
               
           },
           mounted() {
                console.log(document.getElementById('h3').innerText);
           },
           beforeUpdate() {
            //    console.log("界面上的msg:"+document.getElementById('h3').innerText);
            //    console.log("data中的数据msg:"+this.msg);
               
           },
           updated () {
                console.log("界面上的msg:"+document.getElementById('h3').innerText);
                console.log("data中的数据msg:"+this.msg);
           },
           
        });

在这里插入图片描述
此时页面上的数据和data中的数据是一致的,这是因为实例更新完毕后调用此函数,此时data中的状态值和界面上显示的数据都已经完成了更新,界面已经被重新渲染好了。

before Destroy

因为不知道如何进入这个阶段所以这个阶段就没有实例显示了,最后一个阶段也是。
实例销毁前调用,在这个阶段实例任然可以使用。

destroy

Vue实例销毁后使用,调用后,Vue实例指示的所有东西都会解绑,所有的事件监听都会被移除,所有的子实例也会被销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值