vue生命周期浅解析

本文详细解析了Vue实例从创建到销毁的整个生命周期,包括beforeCreated、created、beforeMount、mounted等关键钩子函数的作用及调用时机,帮助读者深入理解Vue的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个vue实例从创建到销毁都有一个生命周期,理解生命周中每个钩子的意义可以帮助我们快速理解使用vue
(下图源自vue官网)
在这里插入图片描述vue实例化以后完成实例创建第一次渲染页面会依次执行beforeCreate、created、beforeMount、mounted,每当页面数据发生变化才会触发beforeUpdate、beforeUpdated,在关闭实例会依次执行beforeDestroy、destroyed。下面分别解释各函数钩子存在意义

1.beforeCreated(创建前)

vue实例化以后首先执行beforeCreated钩子,该钩子函数在数据观测和事件配置之前被调用,所以无法访问实例中的数据和方法

beforeCreated() {
	console.log(this.$data)  // undefined
	console.log(this.$el)  // undefined
	// el和data还未初始化
}

2.created(创建后)

vue实例完成创建,数据观测和事件配置已经完成,在钩子函数中可以调用methods里面的函数

created() {
	console.log(this.$data) // Object
	console.log(this.$el) // undefine
	// 已经完成了数据初始化,因此在这个阶段可以修改data中的数据
}

3.beforeMount(挂载前)

挂载前被调用,此时只能获取到data和虚拟的dom

beforeMount() {
	console.log(this.$data) // Object
	console.log(this.$el) // undefine
	// 这里已经完成虚拟dom的初始化只是未挂到外部html上
}

4.mounted(挂载后)

template中的html已经挂到外部html,展示在页面上,这个只在实例第一次渲染调用,当数据改变更新页面时是不会再调用这个钩子的,也就是说一个生命周期中只会调用一次

mounted() {
	console.log(this.$data) // Object
	console.log(this.$el) // <div class=""></div>
}

5.beforeUpdate(更新前)

数据发生改变时,虚拟dom发生改变的阶段,在这个阶段还可以对数据进行更改

6.updated(跟新后)

组件DOM已更新完毕,该钩子在渲染中不被调用

7.deforeDestroy(销毁前)

关闭实例销毁前这个阶段可以把页面数据重置

8.destroyed(销毁后)

该钩子在渲染中不被调用,实例销毁后,实例中的事件,子实例被销毁,所有东西都会解绑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值