生命周期是什么?就是一个东西从有到无的过程。然后再vue项目中,就是vue实例从创建到销毁的过程
生命周期的四个阶段
场景:组件创建完毕后,可以在created生命周期函数中发起Ajax请求,从而初始化data数据
分类:
4个阶段:
1.初始化
2.挂载
3.更新
4.销毁
8个方法:
钩子函数
概念:钩子函数是vue框架中内置的函数,随着组件的生命周期阶段,自动执行不同的钩子函数
作用:特定的时间,执行待定的代码。
钩子函数:前面方法是某个生命周期之前,后面是某个生命周期阶段之后
注意点:因此我们可以根据触发的钩子函数来判断生命周期处于的阶段
初始化阶段(实例化vue阶段)
在初始化项目环境的时候,我们会在入口文件中导入vue模块和根组件,然后会将根组件实例化,并且会将其挂载到相应的dom元素上。因此组件也是vue的实例。
注意点:在beforeCreate钩子函数中是拿不到data和methods中的数据的,在Created及以后阶段中的钩子函数中都可以拿到data和methods中的函数。
挂载阶段(将组件挂载到dom元素上)
有template模板标签就会加载这个模板标签,然后没有template模板标签会直接找到el挂载的dom元素然后直接加载这个dom元素中的代码 ,然后这种情况只会出现在不在脚手架环境中开发 。
更新阶段
就是当data中的数据发生改变的时候,template中的虚拟dom上的数据就会发生改变,然后虚拟dom就会跟原来的虚拟dom比较,然后再将更新后的数据打补丁到真实dom上。因此在beforeUpdate这个钩子函数中是拿不到更新后的dom元素及data中数据,因为这个阶段新旧dom元素做对比之后还没更新上传到真实dom上。Update这个钩子函数中才能拿到更新后的dom元素及data中更新的数据。
销毁阶段
销毁阶段就是在父组件中将组件上设置v-if=“false”指令将当前实例给销毁,然后就会触发最后销毁阶段的两个钩子函数,但是这里销毁组件中的定时器计时器还是会执行。因此需要在beforeDestory这个钩子函数中拿到销毁组件中的事件,计时器,定时器。因此此钩子函数的应用场景就是可以销毁组件中定时器,计时器等等。