Vue 啥是生命周期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 啥是生命周期相关的知识,希望对你有一定的参考价值。
参考技术A Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom、渲染-->更新-->渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册js方法,可以让我们自己注册的js方法控制整个大局,在这些事件响应方法中的this直接指向的是vue实例。
特别值得注意的是created钩子函数和mounted钩子函数的区别
beforeCreate
在实例初始化之后,数据观测(data observer)和event/watcher 事件配置之前被调用。
created
实例已经创建完成之后被调用。在这一步,实例已经完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event事件回调。然而,挂载阶段还没开始,¥el属性目前不可见。
beforeMount
在挂载开始之前被调用;相关的render函数首次被调用。
mounted
el 被创建的vm.$el 替换,并挂载到实例上去之后调用该钩子。
beforeUpdate
数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在这个钩子中进一步的更改状态,这不会触发附加的重渲染过程。
updated
由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用。
beforeDestroy
实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed
Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解除绑定,所有的事件监听器都会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。
vue中的生命周期的个人理解
参考技术A #### 生命周期### 生命周期的钩子函数
## vm.$el
一个实例属性。是根的DOM对象(挂载点元素#app的DOM对象)
## vm.$destroy()
一个实例方法。销毁实例的,一般不使用
调用之后会触发beforDestroy和destroyed两个生命周期的钩子函数
## vm.data
一个实例属性。当前实例中data选项中定义的数据
#### 生命周期可以分为三个大阶段
1.初始化挂载阶段
1.beforeCreate
2.createed
3.beforeMount
4.mounted
2.更新阶段
5.beforeUpdate
6.updated
3.销毁阶段
7.beforeDestroy
8.destroyed
#### 生命周期的狗子函数有
1.beforeCreate 实例创建之前 触发一次
2.created 实例创建完成 触发一次
3.beforeMount 实例挂载到页面之前 挂在前 触发一次
4.mounted 实例挂载到页面之后 挂载完成 触发一次
5.beforeUpdate 实例数据更新之前 可能触发多次
6.updated 实例数据更新完成 页面得到更新 可能触发多次
7.beforeDestroy 实例销毁之前 触发一次
8.destroyed 实例销毁 触发一次
## beforeCreate
实例创建之前
1.获取不到vm.$el
2.获取不到vm.$data(因为获取不到data数据,无法赋值,所以这里不好做ajax请求)
3.一帮没什么大用,不用去操作它
4.一个生命周期中只会触发一次
## created
实例创建完成
1.获取不到vm.$el
2.能获取到data选项中的数据,能调用methods选项中的函数了
3.一个生命周期中只会触发一次
4.在这里发送ajax请求,获取页面初一打开就需要的数据,
## beforeMount
实例挂载之前
挂载的意思是:vue解析模板数据完成,并替换到真实的DOM上面
1.通过vm.$el获取不到真实的DOM(页面渲染的DOM)
2.可以获取data
3.一个生命周期中只会触发一次
4.一般没什么大用,不用去操作它
## mounted
实例挂载完成
1.能够获取到真实DOM
2.可以获取data和methods
3.一个生命周期中只会触发一次
4.初始化与DOM相关的操作,需要放在这儿,比如Swiper的实例化
## beforeUpdate
实例更新之前
1.能拿到数据更新之前的DOM,但是得不到数据更新之后的DOM
2.一个生命周期过程中,可能会触发多次
3.不要在这里去修改数据,也不要去发送异步请求(会死循环,修改数据后就会再次执行这里)
4.一般没什么大用,不用去操作它
## updated
实例更新之后
1.能获取到数据更新之后的DOM
2.一个生命周期过程中,可能会触发多次
3.不要在这里去修改数据,也不要去发送异步请求(会死循环,修改数据后就会再次执行这里)
4.一般用于真实DOM更新之后的再次操作,比如Swiper的更新
## beforeDestroy
实例销毁之前
1.做一些销毁工作,比如计时器的清除,全局事件绑定的销毁等工作
## destroyed
实例销毁完成
1.解除数据绑定、数据监听
2.没什么大用,不用去操作它
## vm.$mount(el)
一个 实例方法
手动调用它来挂载页面
## template
1.template作为包裹元素来使用
2.template 配置选项
如果有template选项,name就使用template选项的内容作为模板,后续解析完成去替代挂载点元素
如果没有template选项,那么久使用el指定的元素内容作为模板
如果都有优先template
以上是关于Vue 啥是生命周期的主要内容,如果未能解决你的问题,请参考以下文章