Vue 生命周期函数

Vue生命周期详解
本文深入解析Vue.js的生命周期,包括创建、运行和销毁三个阶段。详细介绍了beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed等函数的作用及执行时机。

项目前导 学习笔记

一、生命周期函数


        生命周期函数代表的是 Vue 实例,或者是 Vue 组件,在网页中各个生命阶段所执行的函数。生命周期函数可以分为 创建阶段运行期间 以及 销毁期间。其中:

  • 创建期间的函数有:beforeCreatecreatedbeforeMountmounted

  • 运行期间的函数有:beforeUpdateupdated

  • 销毁期间的函数有:beforeDestroydestroyed


以下是官方文档给到的一张图,从这种图中我们可以了解到每个部分执行的函数。

在这里插入图片描述


1.1、创建期间

  • beforeCreate: Vue 或者组件刚刚实例化,data、methods 都还没有被创建。

  • created: 此时 data 和 methods 已经被创建,可以使用了。模板还没有被编译。

  • beforeMount: created 的下一阶段。此时模板已经被编译了,但是并没有被挂在到网页中。

  • mounted: 模板代码已经被加载到网页中了。此时创建期间所有事情都已经准备好了,网页开始运行了。

    <div id="app">
        <!--  创建  -->
        <p id="username">{{username}}</p>
    </div>


	<script>
	    new Vue({
	        el: "#app",
	        data: {
	            username:"老王",
	            message:"错误信息"
	        },
	        methods:{
	            demo: function(){
	                return "hello world"
	            }
	        },
	
	        <!--  创建期间  -->
	
	        beforeCreate(){
	            console.log("===== beforeCreate =====")
	            console.log(this.username);
	            console.log(this.demo);
	            console.log(" ")
	        },
	
	        created(){
	            console.log("===== created =====")
	            console.log(this.username);
	            console.log(this.demo);
	            console.log(" ")
	        },
	
	        beforeMount(){
	            console.log("===== beforeMount =====")
	            console.log(document.getElementById('username').innerText)
	            console.log(" ")
	        },
	
	        mounted(){
	            console.log("===== mounted =====")
	            console.log(document.getElementById('username').innerText)
	            console.log(" ")
	        },
	    })
	</script>



1.2、运行期间

  • beforeUpdate: 在网页网页运行期间,data 中的数据可能会进行更新。在这个阶段,数据只是在 data 中更新了,但是并没有在模板中进行更新,因此网页中显示的还是之前的

  • updated: 数据在 data 中更新了,也在网页中更新了。

    <div id="app">
        <!--  创建  -->
        <p id="username">{{username}}</p>
        <!--  运行  -->
        <input type="text" v-model="username">
    </div>


	<script>
		...
	        <!--  运行期间  -->
	
	        beforeUpdate(){
	            console.log("===== beforeUpdate(显示之前的) =====")
	            console.log(document.getElementById('username').innerText)
	            console.log(" ")
	        },
	
	        updated(){
	            console.log("===== updated(显示修改后的) =====")
	            console.log(document.getElementById('username').innerText)
	            console.log(" ")
	        },
	    })
	</script>



1.3、销毁期间

  • beforeDestroy: Vue 实例或者是组件在被销毁之前执行的函数。在这一个函数中 Vue 或者组件中所有的属性都是可以使用的。

  • destroyed: Vue 实例或者是组件被销毁后执行的。此时 Vue 实例上所有东西都会解绑,所有事件都会被移除,所有子元素都会被销毁。

    <div id="app">
        <!--  创建  -->
        <p id="username">{{username}}</p>
        <!--  运行  -->
        <input type="text" v-model="username">
        <!--  销毁  -->
        <error-view v-bind:message="message" v-if="message"></error-view>
        <button @click="message=''">点击销毁</button>
    </div>


	<script>
	    Vue.component(
	        'error-view', {
	            props:['message'],
	            template:'<p style="color:red">{{message}}</p>',
	
	            <!--  销毁之前执行的函数  -->
	            beforeDestroy(){
	                console.log(this.message);
	            }
	        }
	    )
	    
		...
		
	</script>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值