vue中生命周期钩子
时间: 2023-09-03 15:14:43 浏览: 100
Vue中的生命周期钩子函数分为多个阶段,包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeDestroy、destroyed、errorCaptured等。这些钩子函数在Vue实例的不同阶段被依次调用,用于在特定时刻执行一些逻辑操作。具体来说,生命周期钩子函数的执行顺序如下:
1. beforeCreate:在实例初始化
相关问题
vue中生命周期钩子函数的区别
以下是Vue中生命周期钩子函数的区别:
Vue2.x的生命周期钩子函数:
- beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
- created:实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
- beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
- mounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子函数。实例已经完成以下的配置:编译模板,把 data 和 render 函数生成虚拟 DOM,再通过虚拟 DOM 生成真实 DOM,最后将真实 DOM 挂载到页面上。此时,组件已经出现在页面中。
- beforeUpdate:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在该钩子函数中进一步地更改状态,不会触发附加的重渲染过程。
- updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子函数。当这个钩子函数被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
- beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
- destroyed:实例销毁之后调用。这个时候,所有的事件监听器都已经被移除,所有的子实例也都被销毁。
Vue3.x的生命周期钩子函数:
- onBeforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
- onMounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子函数。实例已经完成以下的配置:编译模板,把 data 和 render 函数生成虚拟 DOM,再通过虚拟 DOM 生成真实 DOM,最后将真实 DOM 挂载到页面上。此时,组件已经出现在页面中。
- onBeforeUpdate:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。可以在该钩子函数中进一步地更改状态,不会触发附加的重渲染过程。
- onUpdated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子函数。当这个钩子函数被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
- onBeforeUnmount:实例销毁之前调用。在这一步,实例仍然完全可用。
- onUnmounted:实例销毁之后调用。这个时候,所有的事件监听器都已经被移除,所有的子实例也都被销毁。
Vue2生命周期钩子
Vue2生命周期钩子是在Vue实例的不同阶段执行的一组函数。这些钩子函数允许我们在特定的生命周期阶段执行自定义的逻辑。以下是Vue2的生命周期钩子及其执行顺序:
1. beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。此时,实例还没有被创建,无法访问到data、computed、methods等属性。
2. created:在实例创建完成后被调用。此时,实例已经完成了数据观测,属性和方法的运算,但是还没有挂载到DOM上。
3. beforeMount:在挂载开始之前被调用。此时,模板编译已经完成,但是还没有将模板渲染到页面上。
4. mounted:在挂载完成后被调用。此时,实例已经被挂载到DOM上,可以访问到DOM元素。
5. beforeUpdate:在数据更新之前被调用,发生在虚拟DOM重新渲染和打补丁之前。可以在这个钩子中进行状态更新操作。
6. updated:在数据更新之后被调用,发生在虚拟DOM重新渲染和打补丁之后。可以执行依赖于DOM的操作。
7. beforeDestroy:在实例销毁之前被调用。此时,实例仍然完全可用。
8. destroyed:在实例销毁之后被调用。此时,实例中的所有指令、事件监听器都已经被移除,所有子实例也都被销毁。
阅读全文