Vue.js 是一个前端框架,它提供了许多有用的功能,其中之一是生命周期函数。生命周期函数是在 Vue 实例被创建、挂载和销毁时自动调用的方法。这些方法允许我们在不同阶段对应用程序进行操作和处理,例如在挂载后执行某些操作或在销毁前清理代码。本文将详细介绍 Vue.js 的生命周期函数。
Vue.js 的生命周期函数有哪些
Vue.js 的生命周期函数分为 8 个阶段,分别是:
- beforeCreate:在实例化之前调用,此时还没有初始化数据和事件
- created:实例创建后被调用,数据已经初始化,但是模板和虚拟DOM还没有被创建
- beforeMount:模板和虚拟DOM创建完成,但尚未将其挂载到 DOM 中
- mounted:实例挂载完成,可以访问到 DOM 元素
- beforeUpdate:数据发生变化,视图尚未更新时被调用
- updated:数据发生变化,视图已经更新时被调用
- beforeDestroy:实例销毁之前调用,此时实例仍然可用
- destroyed:实例已销毁,所有的事件监听和子组件都已被移除
生命周期函数的作用和意义
生命周期函数的作用在于允许我们在不同阶段对应用程序进行操作和处理。下面我们具体来探讨每个函数的作用和意义。
beforeCreate
beforeCreate 阶段是实例创建之前调用的,此时 Vue 实例还没有被创建,实例中的数据和事件也都没有被初始化。这里我们不能访问实例上的任何属性,也不能在这里操作DOM(因为DOM的实例还没有被创建)。尽管如此,我们可以在这里进行一些全局的操作,例如在实例化之前注册全局过滤器或者指令。
new Vue({ beforeCreate() { console.log('beforeCreate') } })
created
created 阶段是在实例创建之后调用。此时实例中的数据和事件已经初始化,但是模板和虚拟 DOM 还没有被创建生效。我们可以在此阶段访问实例中的数据和方法,但此时还不能操作 DOM。
new Vue({ created() { console.log('created') } })
beforeMount
beforeMount 阶段是模板和虚拟 DOM 创建完成,但尚未将其挂载到 DOM 中。可以在此阶段获取渲染后的HTML代码,且该渲染后的代码仅在服务器端起作用。
new Vue({ beforeMount() { console.log('beforeMount') } })
mounted
mounted 阶段是实例挂载完成,可以访问到 DOM 元素。这是一个非常重要的阶段,因为我们可以在此阶段获取到实例挂载到页面上后的 DOM 节点,可以对其进行操作。例如,我们可以在此阶段获取到通过 $refs 获取到的子元素。
new Vue({ mounted() { console.log('mounted') } })
beforeUpdate
beforeUpdate 旨在在数据变化前提供执行的钩子,可以在此阶段获取到变化前的数据和 DOM。但此时要注意:不要在此阶段修改数据,因为它将导致无限循环。
new Vue({ beforeUpdate() { console.log('beforeUpdate') } })
updated
updated 与 beforeUpdate 相似,唯一的区别是更新后的结果已更新到 DOM 中,并被渲染到页面上。在此阶段,我们可以对更新后的数据或者 DOM 进行操作或者修改。
new Vue({ updated() { console.log('updated') } })
beforeDestroy
beforeDestroy 阶段将在实例销毁之前调用。此时实例仍然可用,而且可以对其进行操作。但要注意:在此阶段我们不能访问实例中的数据和 DOM 元素,因为在此阶段它们将被销毁。
new Vue({ beforeDestroy() { console.log('beforeDestroy') } })
destroyed
destroyed 阶段是实例已经销毁,所有的事件监听和子组件都已被移除。在此阶段,我们可以进行一些清理操作,例如清除定时器、事件监听、手动解除绑定的 DOM 操作等。
new Vue({ destroyed() { console.log('destroyed') } })
如何使用生命周期函数
我们可以在 Vue 实例中定义生命周期函数,Vue.js 将在不同的阶段调用这些函数。在生命周期函数内,我们可以对数据进行操作,修改DOM元素,调用方法,或者进行一些其他的操作。
例如,我们可以定义 beforeCreate 生命周期函数:
new Vue({ beforeCreate() { console.log('beforeCreate') }, created() { console.log('created') } })
除此之外,我们还可以定义一个 mixin 对象,用来混合生命周期函数和其他逻辑。Mixin 允许我们将一些通用的逻辑,例如时间戳等,引用在多个组件中,并且可以在生命周期函数中进行操作。
-- -------------------- ---- ------- ----- ------- - - --------- - -------------------- -- -------- - -- --- ----- ------- ---------- --------- - -- ---- --------- -- -------------------- -- ------------ - ---
总结
Vue.js 的生命周期函数是开发 Vue.js 应用程序时最重要的部分之一。正确理解生命周期函数对于编写高质量的应用程序至关重要。本文介绍了 Vue.js 的生命周期函数及其作用、意义和使用方法。掌握生命周期函数的概念和使用方法,可以帮助我们更好地编写高质量的 Vue.js 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646572f7968c7c53b06221fb