vue的生命周期

二、生命周期
在这里插入图片描述
1.创建阶段的生命周期函数
首先通过var vm = new Vue({}) 创建一个Vue实例对象,vm是一个空的Vue实例对象
beforeCreate() (初始化之后) 在beforeCreate()生命周期函数执行的时候,vue对象中的data和methods中的数据没有初始化,在beforeCreate()中无法访问data数据和methods中的方法;
2.created() (创建完成 )
此时data数据和methods中的方法已经初始化好了,也就是说,
3.created()函数
是最早能够访问data数据和methods中的方法的生命周期函数;
4.beforeMount()(挂载之前)
beforeMount()函数之前,Vue开始编译模板,把Vue代码中的指令进行执行,最终在内存中生成一个编译好的模板字符串,然后把这个模板字符串渲染为内存中的DOM。注意:此时只是把模板字符串渲染在内存中,还没有真正挂载在页面上。当
5.beforeMount()函数执行的时候,
模板已经在内存中编译好了,只是没有渲染到页面上,页面中还是旧的模板字符串,没有被真正的数据值替换过来;
6.mounted()(被挂载之后)
此函数执行时,模板字符串已经真正的挂载在页面中,用户可以看到渲染好的页面,注意:mounted是创建阶段的最后一个生命周期函数,当mounted执行完,表示实例已经创建好了。此时组件脱离创建阶段,进入运行阶段
运行阶段的生命周期函数
7.beforeUpdate()(数据更新前)
此函数执行时,界面数据还没有更新,但是data中的数据已经更新了,页面尚未和内存中的data同步;
8.updated()(被更新后)
先根据data中最新的数据在内存中重新渲染一份新的DOM树,然后把最新的DOM树渲染到真正的页面中去,就完成了从data(Model)→ view的更新;此函数执行时,页面data已经和内存中保持同步,都是最新的数据。
包裹的动态组件会被缓存,它是一个抽象组件,它自身不会渲染一个dom元素,也不会出现在父组件链中。当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

activated() keep-alive组件激活时调用,也就是当页面存在缓存时调用。进入当前存在activated()函数的页面时,一进入页面就触发,可用于初始化页面数据等
deactivated() keep-alive 组件停用时调用,该钩子在服务器端渲染期间不被调用,在页面结束时触发该方法,可清除掉滚动方法等缓存。
销毁阶段的生命周期函数
9.beforeUpdate() (销毁之前)
当执行beforeUpdate()函数时,Vue实例已经从运行阶段进入销毁阶段,当执行beforeUpdate()时候,data和methods、指令、过滤器还处于可用状态,没有被销毁;
10.destoryed()(销毁之后)
当执行destoryed()函数时候,组件已经完全销毁,所有数据都不可用
10.代码实现

<template>
  <div>
      <div style="font-size:10vw">生命周期 {{message}}</div>
      <p style="font-size:10px">生命周期 {{message}}</p>
      <div style="background-color:red;height:12vh"></div>
      <button @click="btn">加法</button>
      <p>{{num}}</p>
      <button @click="xiaohui">销毁</button>
  </div>
</template>

<script>
export default {
    data(){
        return{
            message:'你好',
            num:0
        }
    },
    created(){
        alert('这是创建完成之后')
    },
    beforeCreate(){
        alert('这是创建之前')
    },
    beforeMount(){
        alert('挂载之前');
    },
    mounted(){
        alert('挂载之后');
    },
    beforeUpdate(){
        alert('更新之前')
    },
    updated(){
        alert('更新之后')
    },
    beforeDestroy(){
        alert('销毁之前')
    },
    destroyed(){
        alert("销毁之后");
        this.num=0
    },
    methods:{
        btn(){
            this.num+=1
        },
        xiaohui(){
            this.$destroy()
        }
    }
}
</script>

<style>

</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值