首页 » cdn2 » 正文

Vue生命周期:掌握不同阶段实现更好的组件管理

眉心 2024-09-20 cdn2 23 views 0

扫一扫用手机浏览

文章目录 [+]

Vue.js是一个用于构建用户界面的渐进式框架,它的核心库主要关注视图层,易于与其他库或已有项目整合,Vue.js提供了一种简单的方法来声明组件,使得组件的定义更加直观且易于复用,在Vue中,组件生命周期钩子函数允许你在特定的时间点执行代码,这对于管理组件的状态和行为至关重要,本文将详细介绍Vue的生命周期钩子函数,帮助你更好地掌握不同阶段的实现,从而实现更好的组件管理。

1. beforeCreate

在实例初始化之后、数据观测 (data observer) 和 event/watcher 事件配置之前被调用,还没有进行数据观测和事件监听,所以无法访问到 DOM,但是可以访问到 data 对象。

beforeCreate() {
  console.log('beforeCreate');
}

2. created

在实例创建完成后被立即调用,在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event事件回调,挂载阶段还没开始,$el属性目前不可见。

created() {
  console.log('created');
}

3. beforeMount

在挂载开始之前被调用:相关的 render 函数首次被调用。

beforeMount() {
  console.log('beforeMount');
}

4. mounted

实例挂载到 DOM 后调用该钩子,如果实例被挂载到一个文档内的元素上,当 mounted 被调用时 vm.$el 也在文档内,此钩子函数只会被调用一次。

mounted() {
  console.log('mounted');
}

5. beforeUpdate

数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前,可以在该钩子中进一步地更改状态,这不会触发附加的重渲染过程。

beforeUpdate() {
  console.log('beforeUpdate');
}

6. updated

由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用,调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作,然而在大多数情况下,应避免在此期间更改状态,该钩子函数可能会多次被调用。

updated() {
  console.log('updated');
}

7. beforeDestroy

实例销毁之前调用,在这一步,实例仍然完全可用,Vue 会在这个阶段执行一些清理操作,比如移除指令、解绑事件等,你可以在该钩子中放置任何需要在实例销毁之前执行的逻辑,但是请注意,服务器端渲染期间不会有 $destroy 事件,所以如果你需要在这些情况下取消异步请求,你应该使用 nextTick。

beforeDestroy() {
  console.log('beforeDestroy');
}

8. destroyed

Vue 实例销毁后调用,调用后,所有的事件监听器会被移除,所有的子实例也会被销毁,Vue 实例将不再响应数据绑定,但仍然可以访问已挂载的属性和方法,如果你需要在组件销毁后执行一些逻辑,请在该钩子中进行,通常在这一步也可以进行一些资源释放的操作,比如关闭定时器、清除定时器等。

destroyed() {
  console.log('destroyed');
}

9. activated、deactivated、beforeDeactivated、deactivated、beforeDeactivated、errorCaptured、serverPrefetch、clientPrefetch、ready、waiting、updated、willUnmount、unmounted、beforeUnmount、destroyed、adjustErrorCapturedOffsets、caughtError、errorHandlerAdded、errorHandlerRemoved、renderTracked、renderTriggered、beforeMountComponent、mountedComponent、beforeUpdateComponent、updatedComponent、beforeUpdateChildComponent、updatedChildComponent、beforeUnmountComponent、unmountedComponent、beforeDestroyComponent、destroyedComponent、activatedChildComponent、deactivatedChildComponent、passiveUpdatesEnabledChanged这些生命周期钩子在本篇文章中并未详细介绍,但它们在实际开发中也是非常有用的,了解这些钩子可以帮助你更好地管理组件的状态和行为。

标签:

相关推荐

  • 暂无相关推荐