vue2的生命周期分别是
beforeCreate:第一个生命周期钩子,在实例初始化之后,进行数据侦听和事件/侦听器配置之前同步调用。此时实例的date和methods等配置还未初始化,无法调用,只能使用一些默认事件。
created:在实例创建完成后被立即同步调用,在这一步中,实例已完成对选项的处理,意味着以下内容已被配置完毕:数据侦听,计算属性方法,事件/侦听器的回调函数,然后挂载还没开始,且$el property目前尚不可用,模板还没有贬义,也就是我们还不能获取到DOM
beforeMounted:该在挂载之前被调用,相关的render函数首次被调用,该钩子函数在模板渲染之前调用,也就是DOM节点挂载到真实DOM树之前调用,此模板进行编译,会调用render函数生成vDOM,也就是虚拟DOM,此时我们同样无法获取DOM节点,因为此时只存在VDOM,还在JS级别。
mounted:实例被挂载后调用,这时el被新创建的vm.el替换了,如果根实例挂载到了一个文档的元素上,当mounted调用时vm.el也在文档内。
注意:mounted不会保证所有的字组件也都被挂载完成,如果你希望等到整个视图都渲染完毕再执行某些操作,可以在mounted内部使用nextTick
执行该钩子函数时,我们的模板编译好了,而且挂载到真实DOM树上面去了,也就是我们的页面可以显示了,(该钩子在服务器渲染期间不被调用)
beforeUpdate:在数据发生改变后,DOM被更新之前调用,这里适合在现有DOM将要被更新之前访问它,比如移除手动添加的事件监听器。
该钩子在服务器端渲染期间不被调用,因为只有初次渲染会在服务器端进行
该钩子函数在data数据发生变化之后调用,此时data里面的数据已经是最新的啦,但是页面上DOM还没有更新最新的数据
update:在数据更改到值的虚拟DOM重新渲染和更新完毕之后被调用。
当这个钩子被调用时,组件DOM已经更新,所以你现在可以自行依赖于DOM的操作,然后在大多数情况下,你应该避免在此期间更改状态。如果要相应状态改变,通常最好使用计算属性或watcher取而代之
注意:updated不会保证所有的子组件也都被重新渲染完成,如果你希望等到整个视图都渲染完毕,可以在updated里使用nextTick
该钩子函数会在data数据更新之后执行,而且此时页面也渲染更新完成了,显示的就是最新的数据
不要在updated中修改data数据,很容易造成死循环
beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用,我们通常会在这个钩子函数里面解除一些全局或者自定义事件
destroyed:实例销毁后调用,该钩子被调用后,对应Vue实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。
errorCaptured:在捕获一个来自后代组件的错误时被调用,次钩子会收到三个参数:错误对象,发生错误的组件实例以及一个包含错误来源信息的字符串,此钩子可以返回false以组织该错误继续上传播
activated:被keep-alive缓存的组件激活时调用。
deactivated:被keep-alive缓存的组件失活时调用
activated和deactivated只在使用keep-alive组件的情况下才会被触发。
vue3和vue2都做了哪些改变
1,beforeDestroy和destroyed这两个钩子函数已经被启用,而是使用beforeUnmount和unmounted替代
2,多了一个omMounted钩子可以用来在组件完成初始渲染并创建DOM节点后运行代码
import { onMounted } from 'vue'
onMounted(() => {
//这个写的是函数
})
vue3生命周期执行的顺序分别是
1,beforeCreate
2,created
3,beforeMount
4,mounted
5,beforeUpdate
6,updated
7,beforeUnmount
8,unmounted