关于Android工程师转vue的三两事儿(6)--生命周期

关于生命周期其实在Android是一个比较常见的话题,我在接触前端的时候,我首先研究的就是这个东西。因为你只有把握住这个东西生命线,你才能更好的去运用它,我这里就结合我自己的一些所见所闻做一点生命周期的介绍。

一、 生命周期示意图:

关于Android工程师转vue的三两事儿(6)--生命周期_第1张图片
vue生命周期示意图

如上图所示,在vue组件生命周期内一共经历:

  • beforeCreate:组件创建前
  • created:组件创建
  • beforeMount:组件挂载前
  • mounted:组件挂载
  • beforeUpdate:组件更新前
  • updated:组件更新
  • beforeDestroy:组件销毁前
  • destroyed:组件销毁
    上面分别是对于组件生命周期的一些概述,但是并没有去结合代码去看,感觉带入感并没有这么强,下面就用代码引入的方法详细的向大家介绍

二、代码解读




上面的项目就是我用vue-cli脚手架新建的一个vue项目。并且改代码只要拷贝进项目可以直接去查看。运行效果如下

关于Android工程师转vue的三两事儿(6)--生命周期_第2张图片
Chrome调试器log

从上面的log上面其实可以看出来:
1、 beforecreate data和组件都没有被初始化的状态
2、create data里面的内容已经可以访问到了
3、 mounted 页面已经被挂载成功了。
那么结合代码,当点击button的时候,发现console会发生变化
关于Android工程师转vue的三两事儿(6)--生命周期_第3张图片
更新data里面的数据

由上图可知,当页面data内的数据发生变化的时候,并不会触发上面说到的生命周期方法,而是会触发到beforeupdate和update方法。
关于Android工程师转vue的三两事儿(6)--生命周期_第4张图片
image.png

同理当页面关闭的时候,页面会先beforedestroy和destroyed方法。其中可以看见的是:
1、 beforedestroy状态下,所有的页面内都是可以访问的状态
2、 destroyed下,组件会被回收,但是data却依旧能被访问

三、 生命周期总结

关于Android工程师转vue的三两事儿(6)--生命周期_第5张图片
生命周期总结图

可能这里结合实践我可能需要bb两句:
一、 created阶段的ajax请求与mounted请求的区别:前者页面视图未出现,如果请求信息过多,页面会长时间处于白屏状态
二、 mounted 不会承诺所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以用 vm.$nextTick

四、 父子组件生命周期

父组件如下:




子组件如下:




初始化效果如图:


关于Android工程师转vue的三两事儿(6)--生命周期_第6张图片
父子组件初始化

当父组件data改变的时候:


关于Android工程师转vue的三两事儿(6)--生命周期_第7张图片
父组件data改变

当子组件data改变的时候:
关于Android工程师转vue的三两事儿(6)--生命周期_第8张图片
子组件data改变的时候

当销毁子组件的时候:


关于Android工程师转vue的三两事儿(6)--生命周期_第9张图片
当销毁子组件的时候

当父组件被销毁的时候
当父组件被销毁的时候

当父组件改变传给子组件的props值的时候
关于Android工程师转vue的三两事儿(6)--生命周期_第10张图片
当父组件改变传给子组件的props值

总结:
1、 仅当子组件完成挂载后,父组件才会挂载
2、当子组件完成挂载后,父组件会主动执行一次beforeUpdate/updated钩子函数(仅首次)

3、父子组件在data变化中是分别监控的,但是在更新props中的数据是关联的
4、销毁父组件时,先将子组件销毁后才会销毁父组件

六、说在最后

可能有很多人都不会理解我为什么会花一个晚上的时候去整理这个东西,但是在我们的眼中每个程序员的能力并没有太大的差距,或者说我没有能力做的比别人好就只能把基础打的比别人牢了。好了,又到凌晨了,去洗澡了

你可能感兴趣的:(关于Android工程师转vue的三两事儿(6)--生命周期)