Vue中的生命周期和钩子函数
首先,先给大家看一张图,这张图清晰的给出了Vue中每一个Vue实例被创建前的初始化过程。接下来,我就给大家逐个进行讲解。
下面我们从源码方面详细解释一下这张图
1.实例化
显而易见,这个就是实例化。实例化之后,会执行以下操作。根据Vue的源码,我们可以看到Vue的本质就是一个function
,new Vue
的过程就是初始化参数、生命周期、事件等一系列过程。
2.初始化事件 生命周期函数
首先就是初始化事件和生命周期函数。这时候,这个对象身上只有默认一些生命周期函数和默认的事件,其他的东西都未创建。
3.beforeCreate:Vue实例创建前
接着就是beforeCreate(创建前)
执行。但是这个时候拿不到data
里边的数据。data
和methods
中的数据都还没初始化。
4.注射响应
injections(注射器)reactivity(响应)
给数据添加观察者。
5.created:Vue实例创建后(请求数据)
created创建后
执行。因为上边给数据添加了观察者,所以现在就可以访问到data
中的数据了。这个钩子也是常用的,可以请求数据了。如果要调用methods
中的方法或者操作data
中的数据,要在created
里操作。又因为请求数据是异步的,所以发送请求宜早不宜迟,通常在这个时候发送请求。
6.是否存在el(元素)
el
指明挂载目标。这个步骤就是判断一下是否有写el
,如果没有就判断有没有调用实例上的$mount(")
方法调用。也就是下一张图。
7.判断是否有template
判断是否有template
。
- 如果有
template
则渲染template
里面的内容。
- 如果没有则渲染
el
指明的挂载对象里的内容。