vue实例生命周期-钩子函数详解

生命周期

  • 每个Vue实例在被创建时都要经过一些列的初始化过程;比如,需要设置数据监听,编译模板,将实例挂载到DOM并在数据变化时更新DOM等; 同时在这个过程中也会执行一些叫做生命周期钩子的函数,这给了用户在不通阶段添加自己的代码的机会;
  • beforeCreate

在实例初始化之后, 数据观测(data observer)和event/watcher事件配置之前被调用;

  • created

在实例创建完成后被立即调用; 在这一步, 实例已完成以下的配置: 数据观测(data observer),属性和方法的运算,event/watcher事件回调; 然而,挂载阶段还没开始,$el属性目前尚不可用;

  • beforeMount

在挂载开始之前调用, 相关的render函数首次被调用;

  • mounted

实例被挂载后调用, 这是el被新创建的vm. e l 替 换 了 ; 如 果 跟 实 例 挂 载 到 一 个 文 档 内 的 元 素 上 , 当 m o u n t e d 被 调 用 时 v m . el替换了; 如果跟实例挂载到一个文档内的元素上, 当mounted被调用时vm. el;,mountedvm.el也在文档内;

  • beforeUpdate

数据更新时调用, 发生在虚拟DOM打补丁之前; 这里适合在更新之前访问现有的DOM, 比如移除已添加的事件监听器;

  • updated
  • beforeDestory

实例销毁之前调用; 在这一步, 实例仍然完全可用;

  • destroyed

实例销毁后调用; 该钩子被调用后, 对应Vue实例的所有指令都被解绑, 所有的事件监听器被移除, 所有的子实例也都被销毁;

eg

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			<p>{{msg}}</p>
		</div>
	</body>
</html>
<script type="text/javascript">	
	var vm = new Vue({	
		el:'#app',
		data:{
			msg:"hello Vue",
			
		},
		beforeCreate:function(){
			// 此时,数据已绑定,但this尚未生效,还没赋给它
			console.log('beforeCreate====',this.msg);
		},	
		created:function(){
			// 此时,数据已绑定,但this已经生效,数据已准备好,已经赋值
			console.log('created====',this.msg,this.$el);
		},
		beforeMount:function() {
			// 这一步可以访问this.$el了,上一步不能,开始准备渲染数据
			console.log('beforeMount',this.$el);
		},
		mounted:function(){
			// 渲染出数据,一般做页面加载后的直接使用的,在这一步操作
			console.log('mounted',this.$el);
		},
		beforeUpdate:function(){
			//更新前的数据
			console.log('beforeUpdate');
		},
		updated:function(){
			//更新后的数据
			console.log('updated');
		},
		beforeDestroy:function(){
			console.log("beforeDestroy");
		},
		destroyed:function(){
			console.log("destroyed");
		},
		
		methods:{
			
			}
			
		
	})	
	
</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值