vue2 的生命周期 和 vue3的区别 细节
时间: 2023-08-25 19:12:44 浏览: 83
Vue 2.x 的生命周期钩子函数执行顺序如下:
1. beforeCreate: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
2. created: 实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。但是挂载阶段还没开始,$el 属性目前不可见。
3. beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用。
4. mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子函数。此时,实例已完成以下的配置:编译模板,将 data 和 computed 属性初始化到内存中,将编译好的模板渲染到页面上。
5. beforeUpdate: 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。
6. updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子函数。当这个钩子函数被调用时,组件 DOM 已经更新,因此你现在可以执行依赖于 DOM 的操作。
7. beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。
8. destroyed: 实例销毁后调用。在这一步,Vue 实例的所有指令已经解绑定,所有的事件监听器已经被移除,所有的子实例也已经被销毁。
Vue 3.x 的生命周期钩子函数执行顺序如下:
1. beforeCreate: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
2. created: 实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。但是挂载阶段还没开始,$el 属性目前不可见。
3. beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用。
4. mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子函数。此时,实例已完成以下的配置:编译模板,将 data 和 computed 属性初始化到内存中,将编译好的模板渲染到页面上。
5. unmounted: 实例卸载之后调用。在这一步,Vue 实例的所有指令已经解绑定,所有的事件监听器已经被移除,所有的子实例也已经被销毁。
Vue 3.x 精简了生命周期函数,去掉了 beforeUpdate 和 updated 钩子函数,这是因为 Vue 3.x 中使用了基于 Proxy 的响应式系统,可以更加高效地更新 DOM,不再需要这两个钩子函数。同时,Vue 3.x 引入了 setup 函数,用于替代 Vue 2.x 中的 beforeCreate 和 created 钩子函数,使得组件的逻辑更加清晰,并且提高了开发效率。
阅读全文