【Vue】生命周期

生命周期

又名:
生命周期回调函数、生命周期函数、生命周期钩子

是什么:
Vue在关键时刻帮我们调用的一些特殊名称的函数

备注:
生命周期函数的名字不可更改,但函数的具体内容是程序员根据需求编写的*
生命周期函数中的this指向的是vm 或 组件实例对象

beforeCreated:
1.初始化了生命中期及事件,但数据代理还未开始。
2.此时无法通过vm访问到data中的数据、methods中的方法。

created:
1.初始化:数据监测、数据代理。
2.此时可以通过vm访问到data中的数据、methods中配置的方法。

beforeMounted:
1.此阶段Vue解析生成虚拟DOM存储在内存中,页面还不显示解析好的内容。
2.页面呈现的是未经过Vue编译的DOM结构。
3.所有DOM的操作,最终都不奏效。

mounted:
1.将内存中的虚拟DOM转为真实DOM插入页面。
2.此时页面中呈现的是经过Vue编译的DOM。
3.对DOM的操作均有效(尽可能避免)。
4.一般在此进行:开启定时器、发送网络请求、订阅消息、绑定自定义实践等初始化操作。

beforeUpdate:
1.此时,数据是新的,但页面时旧的,即:页面尚未和数据保持同步。
2.根据新数据,生成新的虚拟DOM,随后与旧的虚拟DOM进行比较,最终完成页面更新,即Model->View的更新。

updated:
1.此时:数据时新的,页面也是新的。即:页面和数据保持同步。

beforeDestroy:
1.此时,vm中的所有的data、methods、指令等等,都处于可用状态,马上要执行销毁过程,一般在此阶段:关闭定时器、取消订阅消息、解绑自定义事件等收尾操作。

destroyed:
在实例销毁之后调用,调用后,所以的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用

案例:

<html>
<head>
    <meta charset='UTF-8'>
    <title>生命周期</title>
    <script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script>
</head>
<body>
    <div id='root'>
        <h2>当前的n值是:{{n}}</h2>
        <button @click="add">点我n+1</button>
        <button @click="bye">点我销毁案例</button>
    </div>
</body>
<script>
    Vue.config.productionTip = false;
    const vm = new Vue({
        el:'#root',
        data:{
            n : 1
        },
        methods:{
            add(){
                this.n++
            },
            bye(){
                console.log('bye')  
                this.$destroy()
            }
        },
        //在数据检测和数据代理创建之前
        //此时,无法通过vm访问到data中的数据
        //完成了初始化:生命周期、事件,但数据代理还未开始
        beforeCreat(){
            console.log('beforeCreat')
        },
        //初始化:数据监测、数据代理
        //此时,可以通过vm访问到data中的数据,methods中配置的方法
        created(){
            console.log('creatd')
        },
        //此时,页面呈现的是未经Vue编译的DOM结构
        //所有对DOM的操作,最终都不奏效
        beforeMount(){
            console.log('beforeMounted')
            
        },
        //vue完成模板的解析,并把初始的真实的DOM放入页面后(挂载完毕后)调用DOM
        //1.页面中呈现的时经过Vue编译的DOM。
        //2.对DOM的操作均有效(尽可能避免),至此,初始化过程结束,一般在此进行:开启定时器、发送网络请求、订阅消息、绑定自定义时间等初始化操作
        mounted(){
            console.log('mounted')
            
        },
        beforeUpdated(){
            console.log('beforeUpdated')
        },
        updated(){
            console.log('updated')
            
        },
        beforeDestroy(){
            console.log('beforeDestroy')
            
        },
        destroyed(){
            console.log('destroyed')
            
        }
    })
    //通过外部定时器实现(不推荐)
    // setInterval(()=>{
    //     vm.opacity -= 0.01
    //     if(vm.opacity <= 0) vm.opacity = 1
    // },16)
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值