vue的生命周期八个钩子函数

vue生命周期简介

在这里插入图片描述

生命周期认我们在控制整个vue时更容易形成更好的逻辑,可以分为四个阶段:创建阶段,挂载阶段,更新阶段,销毁阶段分别有:

创建阶段:
beforeCreate() 只有一些实例本身的事件和生命周期函数

 var vm = new Vue({
    el: '#app',
    data: {
        message: '今天是周一!!!'
    },
    beforeCreate(){
        console.group('beforeCreate 创建前状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //undefined
        console.log("%c%s", "color:red", "data   : "+this.$data); //undefined
        console.log("%c%s", "color:red", "message: "+this.message);   //undefined
    },  

created() 是最早使用data和methods中数据的钩子函数

 created(){
        console.group('created 创建完毕状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //undefined
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天是周一!!!
    }, 

挂载阶段:
beforeMount() 指令已经解析完毕,内存中已经生成dom树

 beforeMount(){
        console.group('beforeMount 挂载前状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //[object HTMLDivElement]
        console.log(this.$el);
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天是周一!!!
    }, 

Mounted() dom渲染完毕页面和内存的数据已经同步

 mounted(){
        console.group('mounted 挂载结束状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //[object HTMLDivElement]
        console.log(this.$el);  
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天是周一!!!
    }, 	

更新阶段:
beforeUptate() 当data的数据发生改变会执行这个钩子,内存中的数据是新的,页面是旧的

beforeUpdate(){
        console.group('beforeUpdate 更新前状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //[object HTMLDivElement]
        console.log(this.$el);
        console.log(this.$el.innerHTML);    //<p>今天是周一!!!</p>
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天周二了!!!
    }, 

Updated() 内存和页面都是新的

 updated(){
        console.group('updated 更新完成状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //[object HTMLDivElement]
        console.log(this.$el);
        console.log(this.$el.innerHTML);    //<p>今天周二了!!!</p>
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天周二了!!!
    }, 

销毁阶段:
beforeDestroy() 即将销毁data和methods中的数据此时还是可以使用的,可以做一些释放内存的操作

beforeDestroy(){
        console.group('beforeDestroy 销毁前状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //[object HTMLDivElement]
        console.log(this.$el);
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天周二了!!!
    }, 

Destroyed() 已经销毁完毕

 destroyed(){
        console.group('destroyed 销毁完成状态==========>>');
        console.log("%c%s", "color:red", "el     : "+this.$el);   //[object HTMLDivElement]
        console.log(this.$el);
        console.log("%c%s", "color:red", "data   : "+this.$data); //[object Object]
        console.log("%c%s", "color:red", "message: "+this.message);   //今天周二了!!!
    },

父子组件嵌套时触发钩子函数顺序
组件挂载阶段

父组件beforeCreate=>>父组件created=>>父组件beforeMount=>>子组件beforeCreate=>>子组件created=>>子组件beforeMount=>>子组件mounted=>>父组件mounted

即从创建到挂载,是从外到内,再从内到外
组件更新阶段
父组件beforeUpdate=>>父组件updated
组件销毁阶段
updated
父组件beforeDestroy=>>子组件beforeDestroy=>>子组件destroyed父组件destroyed
即销毁是从外到内,再从内到外

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue生命周期中,一共有11个钩子函数。这些钩子函数用于在不同的阶段执行一些操作,以便我们可以在组件的生命周期中进行一些自定义操作,例如处理数据、向服务器发出请求、添加/删除事件等。 1. beforeCreate:在实例被创建之前,此钩子函数被调用。此时,组件的局部状态和事件还未被初始化,实例身上的属性和方法也不可用。 2. created:在实例被创建之后,此钩子函数被调用。此时,组件的局部状态和事件已经被初始化,但DOM元素还没有被挂载到页面上。 3. beforeMount:在实例挂载到页面之前,此钩子函数被调用。此时,组件的DOM元素已经在内存中生成,但还没有添加到页面上。 4. mounted:在实例挂载到页面之后,此钩子函数被调用。此时,组件的DOM元素已经添加到了页面中,并且可以与用户进行交互。 5. beforeUpdate:在Vue实例更新之前,此钩子函数被调用。此时,组件的数据已经更新,但视图还没有更新。 6. updated:在Vue实例更新之后,此钩子函数被调用。此时,组件的数据和视图都已经更新完毕。 7. beforeDestroy:在Vue实例销毁之前,此钩子函数被调用。此时,组件的实例还未被销毁,但是它的数据和事件已经被卸载。 8. destroyed:在Vue实例销毁之后,此钩子函数被调用。此时,组件的实例和内存中的DOM元素,事件和监听器都已经被销毁,无法访问。 9. activated:在使用<keep-alive>的组件被激活时调用,会传递缓存的组件实例。 10. deactivated:在使用<keep-alive>的组件被停用时调用,会传递缓存的组件实例。 11. errorCaptured:当子组件产生错误时,此钩子函数会被调用。错误会向上冒泡至全局错误处理器。 以上是Vue生命周期中的11个钩子函数,开发者可根据需要在不同的阶段来进行个性化操作,以达到更好的组件效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值