Vue生命周期详解

Vue的生命周期,指的是Vue实列中创立产生到被销毁的整个过程所经验的状态

Vue共有11个生命状态:8个常见和3个后减少的

Vue生命周期共有8个钩子函数,罕用的有4个

第一阶段:初始阶段

1.创立Vue实列,此时只是创立还没有开始,生命处于胚芽状态

1.生命处于胚芽状态

2.初始化Vue实列及外部的很多事件,筹备中的胚芽的活性蛋白开始沉闷(筹备工作),生命周期就这样开始了

2.筹备中的胚芽的活性蛋白开始沉闷(筹备工作),生命周期就这样开始了

诞生了 — 钩子函数:beforeCreate

3.初始化,将data中的数据挂载到Vue实列上,并实现双向绑定(数据劫持),当初能够拜访到Vue外面的数据(Vue有了数据)

3.胚芽冲破细胞壁,通过缝隙([Object.defineProperty]),开始发芽(数据)

诞生了 — 钩子函数created,这个阶段不操作元素和节点,仅仅操作数据,通常咱们会在这个阶段调用办法,发送申请,将申请回来的数据放到data定义的数据中。

4.查看是否有el

4.嫩芽向上成长,查看此地的阳光(el)是否适合

5.如果没有el,期待Vue实列调用$mount来传入el参数

5.如果阳光不好,那就另寻他处(调用$mount),但通常状况下不须要另寻他处(调用$mount)

6.有el判断是不是传递template参数

6.嫩芽发现有了阳光,开始探测此地土地是否肥沃(template参数),但通常土壤并不肥沃(template参数)

7.如果有template参数,将template参数编译成渲染函数,联合html和js创立整体构造,如果没有也不影响,将el参数的outerhtml编译成一个整体

7.嫩芽通过探查做出了判断,如果肥沃(template参数)致力排汇营养能抽出两片嫩芽(,联合html和js创立整体构造),如果一般能抽出一片嫩芽(将el参数的outerHTML编译成一个整体)

诞生了 — 钩子函数:beforeMount

8.搭建好的构造,放在Vue实例的$el属性中,并用这个构造替换掉el参数

8.新成长的叶子 替换掉旧的叶子(替换掉el参数),嫩芽成长为一朵小花

诞生了 — 钩子函数mounted 挂载结束的时候调用,页面中的标签构造加载实现了。

此时,在这个阶段能够操作页面中的DOM标签了。

留神:这个钩子函数在整个生命周期中只会调用一次。

第二阶段:Vue的更新阶段 - 两个小阶段循环执行

9.在页面显示最终内容,这里造成一个死循环,期待数据的变动

9.小花一直的成长,新叶一直代替旧叶(死循环),期待开花的那天(期待数据的变动)

诞生了 — 钩子函数:beforeUpdate

10.数据产生扭转,从新渲染页面的构造和内容,并依据更改内容晓得那局部内容

10.到了开花的这天(数据产生扭转),通过传粉笼罩(从新渲染页面的构造和内容)雌蕊取得信息素判断传得粉,从而判断是否后果(更改内容晓得那局部内容)

诞生了 — 钩子函数updated 依据新批改的数据从新渲染完页面后调用。能够获取到新数据,能够获取到新的DOM。

第三阶段:Vue的销毁阶段

11.期待vm.$destroy办法调用

11.果子接完了,期待进入秋天(期待vm.$destroy办法调用)

诞生了 — 钩子函数beforeDestroy 实例销毁之前调用。在这一步,实例依然齐全可用。

12.调用后卸载vue中所有的监听:包含数据监听,页面构造监听、其余事件监听。。。

12.进入秋天,叶子全副脱落,开始缓缓的凋零(卸载vue中所有的监听)

诞生了 — 钩子函数:destroyed Vue 实例批示的所有货色都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

13.Vue实例销毁