Vue2的生命周期是指Vue实例从创建到销毁的整个过程,这个过程分为四个阶段:初始化阶段、挂载阶段、更新阶段和销毁阶段,每个阶段都伴随着特定的钩子函数,这些钩子函数允许开发者在组件生命周期的特定时间点执行特定的操作。
初始化阶段:
beforeCreate
:实例被创建之初,在这个阶段data和methods中的数据还没有初始化,因此无法访问到它们。created
:实例创建完成,数据观测(data observer)、属性和方法的运算,以及watch/event事件的设置也已完成。此时可以访问data和methods中的数据和方法,但无法访问到$el属性,因为此时还未挂载到DOM上。
挂载阶段:
beforeMount
:在挂载开始之前被调用,此时模板编译已经完成但是还未挂载到页面中。mounted
:实例已经被挂载到页面上,此时真实DOM生成,可以访问到$el属性,也可以操作DOM和通过AJAX获取数据。
更新阶段:
- 在Vue2中,当组件的props、slots、data、computed properties、methods或watcher中的任何一个发生改变时,都会触发组件的更新。但Vue2并没有提供专门的钩子函数来明确地标识这个阶段的开始和结束,而是通过
beforeUpdate
和updated
这两个钩子函数来执行更新前后的操作。 beforeUpdate
:数据更新时调用,发生在虚拟DOM打补丁之前。适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器。updated
:由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。当这个钩子被调用时,组件DOM已经更新,所以你现在可以执行依赖于DOM的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
- 在Vue2中,当组件的props、slots、data、computed properties、methods或watcher中的任何一个发生改变时,都会触发组件的更新。但Vue2并没有提供专门的钩子函数来明确地标识这个阶段的开始和结束,而是通过
销毁阶段:
beforeDestroy
:实例销毁之前调用。在这一步中,实例仍然可以被访问,这是一个进行清理工作,如取消计时器、解绑全局事件、销毁插件对象等的好时机。destroyed
:Vue实例已经被完全销毁,此时无法再访问实例中的数据和方法。
这些生命周期钩子为开发者提供了在组件生命周期的特定阶段执行自定义逻辑的机会,使得组件的开发和管理更为灵活和可控。