> 文章列表 > 【社区图书馆】vue的生命周期

【社区图书馆】vue的生命周期

【社区图书馆】vue的生命周期

目录

vue的生命周期

生命周期流程

Init Events & Lifecycle

beforeCreate

Init injections & reactivity

created

beforeMount

Create vm $el and replace ‘el’ with it

mounted

beforeUpdate

Virtual Dom re-render and patch

updated

beforeDestroy

vm.$destroy()

总结

常用的生命周期钩子

关于销毁vue的说明


vue的生命周期

生命周期又被叫做回调函数、寿命周期钩子、生命周期函数,那么他是什么呢?其实就是vue在每个关键的时间节点,准确的调用了一些特殊的函数,并且这些函数名是不可以修改的,函数的具体业务逻辑我们可以随意定义。比较重要的一点就是:生命周期函数中的this他是指向vm的,或者说是我们的组件实例对象的。

生命周期流程

在官网中我们可以看到vue的生命周期图:

Init Events & Lifecycle

初始化:生命周期、事件、但数据代理还未开始

beforeCreate

这个时候是无法通过vm访问到data中的数据的,methods中的方法也无法调用

Init injections & reactivity

初始化:数据检测、数据代理

created

这个时候,我们时刻一个通过vm访问得到data中的数据的、methods中配置的方法也是可以调用的。

created之后,beforeMount之前这段:vue开始解析模板,生成虚拟Dom(内存中),此时页面还不能真正显示解析好的数据内容。

beforeMount

这个时候,页面中展示的是没有经过Vue编译的Dom结构,所有对Dom的操作,最终都不是奏效的。也就是说,不要在这里去操作dom因为不会有任何效果。

Create vm $el and replace ‘el’ with it

将内存中的虚拟dom转化为真是的dom挂载到页面中

mounted

这个时候,页面中展示的是没有经过vue编译的dom,对dom的操作时有效的(尽量避免这么操作)。到这个时候,初始化的过程已经结束。平时开发中用到的开启定时器、发送网络请求、订阅消息、绑定自定义事件等等初始化的操作都在这时候进行操作

到这里,我们整个挂在的操作就全部完成了!!!!

beforeUpdate

这个时候数据已经更新的,但是页面依旧是旧的,也就是说,页面还没有和数据保持同步!

Virtual Dom re-render and patch

根据新数据,生成新的虚拟dom,然后让他与旧的虚拟dom去进行比较,最后完成页面的更新,也就是完成了Model到view的更新操作。

updated

这个时候数据是最新的了,页面也是最新的了。也就是说页面和数据保持了同步。

beforeDestroy

这个时候,vm中所有的data、methods、指令等等,他都是处在一个可用的状态,即将要执行销毁的过程,一般就是在这个阶段,关闭定时器、取消订阅消息、解绑自定义事件等等的一些收尾工作都是出在这个过程来处理的

这个时候所触发的更新都不会有效了!!!说的简单点就是:人在驾鹤西归之前不会再有任何动作了!

vm.$destroy()

完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及自定义事件监听器。

触发 beforeDestroy 和 destroyed 的钩子

总结

常用的生命周期钩子

1)、mounted:当我们发送ajax请求、启用定时器、绑定我们自定义时间、订阅消息的初始化操作的时候使用

2)、beforeDestroy:清除定时器、解绑自定义事件、取消订阅消息等收尾工作的时候使用

关于销毁vue的说明

1)、当我们销毁操作后,vue开发者工具内任何内容都是看不到的了

2)、我们调用销毁后,自定义事件全部消失,但是我们饿原生的dom事件他是不会消失的

3)、通常我们不会在beforeDestroy操作任何数据,因为就算是你操作数据,也是没有任何意义,因为他不会触发更新流程。

好了,关于vue的生命周期就到这里。

欢迎大家点击下方卡片,关注《coder练习生》