Vue的生命周期函数详解[通俗易懂]

Vue的生命周期函数详解[通俗易懂]Vue有一个完整的生命周期,也就是从开始创建,初始化创建,编译模板,挂载Dom,渲染–>更新–>渲染,销毁等一系列过程,我们称之为Vue的生命周期。通俗的说就是Vue实例从创建到销毁的过程,就是生命周期。每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化,运行中,销毁。beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed1.实例、组件通过newVu

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Vue有一个完整的生命周期,也就是从开始创建,初始化创建,编译模板,挂载Dom,渲染–>更新–>渲染,销毁等一系列过程,我们称之为Vue的生命周期。通俗的说就是Vue实例从创建到销毁的过程,就是生命周期。

每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化,运行中,销毁。

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed
1.实例、组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这个时候,数据还没有挂载呢,只
是一个空壳,无法访问到数据和真实的dom,一般不做操作。

2.挂载数据,绑定事件等等,然后执行created函数,这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数,在
这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取。

3.接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染,然后执行beforeMount钩子函数,在这个函数中虚
拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated,在这里可以在渲染前最后一次更改数据的机会,不会触发其他
的钩子函数,一般可以在这里做初始数据的获取。

4.接下来开始render,渲染出真实dom,然后执行mounted钩子函数,此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经
挂载好了,可以在这里操作真实dom等事情...。

5.当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行
对比之后重新渲染,一般不做什么事儿。

6.当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom。

7.当经过某种途径调用$destroy方法后,立即执行beforeDestroy,一般在这里做一些善后工作,例如清除计时器、清除非指令绑定的事件等等。

8.组件的数据绑定、监听...去掉后只剩下dom空壳,这个时候,执行destroyed,在这里做善后工作也可以。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
	</head>
	<body>
		<div id="box">
			{
  
  {data}}
			<button type="button" @click="xiaohui()">销毁</button>
		</div>
	</body>
	<script type="text/javascript">
		new Vue({
			el: '#box',
			data: {
				data: "这是一个数据",
				info: "这是另一个数据"
			},
			methods: {
				xiaohui() {
					this.$destroy();
				}
			},
			beforeCreate: function() {
				console.log("beforeCreate()创建前:new vue()之后,这个时候,数据还没有挂载,只是一个空壳")
				console.log("数据:" + this.data)
				console.log("模板" + this.$el)
			},
			created: function() {
				console.log("created()已创建:这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数")
				console.log('在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
				console.log('接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染')
				console.log("数据:" + this.data)
				console.log("模板:" + this.$el)
			},
			beforeMount: function() {
				console.log("beforeMount():虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated")
				console.log('在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
				console.log('接下来开始render,渲染出真实dom')
				console.log("数据:" + this.data)
				console.log("模板:" + this.$el)
			},
			mounted: function() { //一次
				console.log("mounted():此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了")
				console.log('可以在这里操作真实dom等事情...')
				console.log("数据:" + this.data)
				console.log("模板:" + this.$el)
			},
			//多次调用
			beforeUpdate: function() {
				console.log('beforeUpdate:重新渲染之前触发')
				console.log('然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染') 
			},
			//多次调用
			updated: function() {
				console.log('updated:数据已经更改完成,dom也重新render完成')
			},
			//销毁之前调用
			beforeDestroy: function() {
				console.log('beforeDestory:销毁前执行($destroy方法被调用的时候就会执行),一般在这里善后:清除计时器、清除非指令绑定的事件等等...')
				console.log("数据:" + this.data)
				console.log("模板:" + this.$el)
			},
			//已经销毁调用
			destroyed: function() {
				console.log('destroyed:组件的数据绑定、监听...都去掉了,只剩下dom空壳,这里也可以善后')
				console.log("数据:" + this.data)
				console.log("模板:" + this.$el)
			}
		})
	</script>
</html>

Vue Lifecycle

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184198.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月9日 上午11:46
下一篇 2022年10月9日 下午12:00


相关推荐

  • Linux,DNS服务器配置

    Linux,DNS服务器配置安装bind,bind-chroot,DNS基本配置:找对地,起对名,写对内容。启动DNS服务器并更改本机DNS服务器地址,测试DNS服务器,易错点分析。

    2022年6月4日
    31
  • oracle9i配置

    oracle9i配置第 2 章 nbsp Oracle9i 的安装本章将以 Windows 操作系统为例讲述 Oracle9i 数据库的安装 主要内容包括 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 安装前的准备 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp Oracle9i 数据库的安装 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 验证安装成功 2 1 nbsp 安装前的准备 2 1 1 nbsp 安装需求 Oracle 公司推荐在 WindowsNT 和 Windows2000 下安装 Oracle 数据库 并且磁盘

    2026年3月16日
    3
  • JavaMD5[通俗易懂]

    JavaMD5[通俗易懂]publicclassCalPrivateKey{publicstaticvoidmain(String[]args) {StringappKey=”cee56d5722ea3afbef390e4dd1beda77″;StringappSecret=”010b02dd9b580f116c5352c5ecb7ca92″;St

    2022年7月14日
    26
  • webstorm 永久激活方法【2021免费激活】

    (webstorm 永久激活方法)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~3S…

    2022年3月30日
    72
  • ps插件套装imagenomic磨皮滤镜安装教程「建议收藏」

    ps插件套装imagenomic磨皮滤镜安装教程「建议收藏」为大家推荐一款知名的PS磨皮降噪滤镜套装,ImagenomicProfessionalSuitemac版中包含noiseware降噪插件、portraiture3磨皮滤镜和Realgrain胶片效果滤镜插件,各有各的功能,轻松进行磨皮、添加胶片效果、降噪等操作,小编这里准备了最新的imagenomic滤镜激活成功教程教程,赶紧试试imagenomic磨皮滤镜吧!imagenomic激活成功教程教程…

    2022年7月22日
    11
  • 腾讯混元多模态理解模型升级,元宝支持同时处理10张图片

    腾讯混元多模态理解模型升级,元宝支持同时处理10张图片

    2026年3月13日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号