Vue的生命周期钩子函数

在vue中一个完整的生命周期过程,我们可以得知生命周期的三个过程:初始化、运行中、销毁中共有八个钩子函数,如下。
● beforeCreate( ) { }
● created( ) { }
● beforeMount( ) { }
●mounted( ) { }
● beforeUpdate( ) { }
● updated( ) { }
● beforeDestroy( ) { }
● destroyed( ) { }
注意:
生命周期钩子的 this 上下文指向调用它的 Vue 实例。
生命周期钩子函数不允许写成箭头函数,因为箭头函数中没有 this,this会作为变量一直向上级作用域查找,直至找到为止,这与生命周期钩子的 this 的指向不同。

钩子函数的的使用 

1.创建期间的生命周期函数:

● beforeCreate( ) { }
● created( ) { }

在页面创建前调用的生命周期钩子函数是beforeCreate( ) { },这个函数我们大多数会和路由守卫一起使用,在页面创建前给它一个路由守卫来保护。

在页面创建后我们的created()钩子函数进行的DOM操作,可以和Vue.nextTick()一起进行,一定要放在Vue.nextTick()的回调函数中。原因是什么呢,原因是在created()钩子函数执行的时候DOM 其实并未进行任何渲染,而此时进行DOM操作无异于徒劳,所以此处一定要将DOM操作的js代码放进Vue.nextTick()的回调函数中。

beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好data,methods属性
created:实例已经在内存中创建好,此时data和methods已经创建好,此时还没有开始编译模板

页面的更新我们使用的是最多的,因为我们的data函数里面的数据渲染页面时,调用更新的次数很多

● beforeMount( ) { }
●mounted( ) { }

beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中
mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示

2.运行期间的生命周期函数

beforeUpdate:状态更新之前执行此函数,此时data中的数据是最新的,但是界面上显示的还是旧的,因为此时还没有开始更新渲染DOM节点

这里需要注意的是beforeUpdate是在data数据被改变后触发,这里的data数据改变如何理解,仅从字面上理解只要data数据值改变就会触发beforeUpdate吗?答案是否定的,我们做个测试。

我们在mounted里修改data的值,mounted表示实例已经挂载完成,因此从理论上来说在在mounted里修改data会触发beforeUpdate,

updated:实例更新完毕后调用此函数,此时data中的状态值和界面上显示的数据都已经被重新渲染好了

data:{
      arrData:[1,2,3]  
},

updated : function(){
     console.log("1==我会先执行");

     this.$nextTick(function(){
          //在下次 DOM 更新循环结束之后执行这个回调。在修改数据之后立即使用这个方法,获取更新后的DOM.

          console.log("3==页面渲染完了才会立即执行");

     })

     console.log("2==会比$nextTick先执行")

 }

3.销毁期间的生命周期函数

beforeDestory:实例销毁之前调用,在这一步,实例仍然完全可用
destroyed:Vue实例销毁后调用,调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器都会被移除,所有的子实例也会被销毁,通常当我们离开这个页面的时候,便会调用这个函数

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值