Vue生命周期探讨

生命周期图示生命周期列表

从一道面试题开始

在这里插入图片描述
测试代码:

<!DOCTYPE html>
<html>
<head>
    <title>Vue源码剖析</title>
    <script src="vue.js"></script>
</head>

<body>
    <div id="demo">
        <h1>声明周期</h1>
        <p>{{foo}}</p>
    </div>
    <script>
        // 创建实例
        const app = new Vue({
            el: '#demo',
            data:{
                foo: 'foo'
            },
            beforeCreate(){console.log('beforeCreate')},
            created(){console.log('created '+this.$el)},
            beforeMount(){console.log('beforeMount')},
            mounted(){
                setTimeout(() => {
                    this.foo = 'foooooo'
                }, 2000);
                console.log('mounted '+this.$el)},
            beforeUpdate(){console.log('beforeUpdate')},
            updated(){console.log('updated')},
        });
    </script>
</body>
</html>

结论:

  • 三个阶段:初始化、更新、销毁
  • 初始化:beforeCreate、created、beforeMount、mounted
  • 更新:beforeUpdate、updated
  • 销毁:beforeDestroy、destroyed

使用场景分析

{
  beforeCreate(){} // 执行时组件实例还未创建,通常用于插件开发中执行一些初始化任务
  created(){} // 组件初始化完毕,各种数据可以使用,常用于异步数据获取
  beforeMounted(){} // 未执行渲染、更新,dom未创建
  mounted(){} // 初始化结束,dom已创建,可用于获取访问数据和dom元素
  beforeUpdate(){} // 更新前,可用于获取更新前各种状态
  updated(){} // 更新后,所有状态已是最新
  beforeDestroy(){} // 销毁前,可用于一些定时器或订阅的取消
  destroyed(){} // 组件已销毁,作用同上
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值