vue的生命周期

今天我们了解一下vue实例的生命周期,具体去了解一下生命周期重要的几个阶段!

beforeCreate阶段

这个阶段,是对vue实例进行初始化之后,在data、methods和watch等选项配置之前调用。

created阶段

这个阶段,实例已经对选项进行了处理,data(数据观测)、computed(计算属性)、methods(方法)、watch(监听)等选项已经被配置,但$el属性还不能使用。

beforeMount阶段

这个阶段,还为挂载实例,也无法对DOM进行操作,向比与created阶段,只多了一个 $el属性。
添加 $el属性首先判断实例是否指定了el选项,如果没有指定则调用vm. $moint(el)指定 $el属性的值;然后再判断实例中是否存在template选项,如果有则使用template选项中的内容,如果没有则使用外面提供的HTML。
判断完成之后,开始编译模板,把data选项中的数据和vue语法声明的模板编译成浏览器可读取的HTML。

Mounted阶段

这个阶段,在将实实例挂载之后调用,其中已经el的值替换成$el。在这个钩子函数中通过ajax访问数据库,对数据进行初始化。

beforeUpdate阶段

这个阶段,是在实例已经挂载之后,且页面上数据被修改,在更新之前被调用,如果在这个函数中去修改数据则不会额外触发。

Updated阶段

这个阶段,是在实例已经挂载之后,且页面被重新渲染之后调用,在这个钩子函数调用时,不能更改实例的数据,这样容易导致死循环。

beforeDestroy阶段

这个阶段,是在实例化对象销毁之前调用,且这个时候vue实例完全可用。

destroyed阶段

这个阶段,是在vue实例销毁之后调用,调用这个阶段时,vue实例的所有指令已经被解除,所有子例已经被销毁

看完上面的内容,可能大家对vue的生命周期有了一点了解。我们可以将vue的生命周期分为四个阶段:1、vue实例的初始化,2、vue实例的挂载,3、vue实例数据的修改,4、vue实例的销毁。现在我们通过一个具体的实例去看看上述几个阶段:

    <div id="app">
        <p>请看控制台了解vue生命周期</p>
        {{ count }}
    </div>
    <script>
        Vue.config.productionTip = false;
        let vm = new Vue({
            el: "#app",
            data: {
                count: 0
            },
            beforeCreate() {
                console.log('----------开始执行beforeCreate----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            created() {
                console.log('----------created----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            beforeMount() {
                console.log('----------beforeMount----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            mounted() {
                console.log('---------- mounted----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            beforeUpdate() {
                console.log('---------- beforeUpdate----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            updated() {
                console.log('---------- updated----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            beforeDestroy() {
                console.log('---------- beforeDestroy----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            },
            destroyed() {
                console.log('---------- destroyed----------');
                console.log("$el:" + this.$el);
                console.log("$data:" + this.$data);
                console.log("data.count:" + this.count);
            }
        })
    </script>

当页面初始化时默认显示:
在这里插入图片描述
当在控制台修改count的值时:
在这里插入图片描述
当在控制台通过==vm.$destroy()==方法销毁实例时:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值