Vue的生命周期

Vue的生命周期

每一个Vue应用都是通过Vue函数创建一个新的Vue实例开始的

每一个Vue实例在被创建时都要经过一系列的初始化过程——如:设置数据监听、编译模版、将Vue实例挂载到DOM(html标签元素)上,并且数据发生变化DOM也会随之更新,等等操作。同时在这个过程中也会运行一些叫做生命周期钩子的函数,有了这些函数,我们就能在不同阶段、不同的时间点执行一些我们想要的操作

官网图片,自己翻译的。。

在这里插入图片描述

  • beforeCreate
    • 实例初始化后,被调用的方法
    • 数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
  • created
    • 实例创建完成后立即被调用的方法
    • 在这一步,实例已完成以下的配置:数据观测 (data observer),property 和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el property 目前尚不可用。
  • beforeMount
    • 挂载开始之前被调用的方法
    • 相关的 render 函数首次被调用。
  • mounted
    • 挂载完成之后被调用的方法
    • 这时 el 被新创建的 vm.$el 替换了。如果根实例挂载到了一个文档内的元素上,当 mounted 被调用时 vm.$el 也在文档内。
  • beforeUpdate
    • 数据更新时被调用的方法
    • 发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。
  • updated
    • 数据更新完毕后被调用的方法
    • 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。
  • beforeDestroy
    • 实例销毁之前被执行的方法
    • 此时实例还是可以使用的,可以进行一些销毁前的工作
  • destroyed
    • 实例被销毁之后被执行的方法
    • 对应 Vue 实例的所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。

补充两个不常用的:

  • activated
    • 被 keep-alive 缓存的组件激活时调用的方法
  • deactivated
    • 被 keep-alive 缓存的组件停用时调用的方法

2.5.0新增:

  • errorCaptured
    • 当捕获一个来自子孙组件的错误时被调用的方法

示例:
主要来看$el$datamessage的变化过程

<div id="app">{{message}}</div>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            message:'haha'
        },
        methods:{
            infoLog:function (){
                console.log("     "+this.$el)
                console.log("     "+this.$data)
                console.log("     "+this.message)
            }
        },
        beforeCreate:function (){
            console.log("----------------实例创建之前----------------");
            console.log("     "+this.$el)
            console.log("     "+this.$data)
            console.log("     "+this.message)
        },
        created:function (){
            console.log("----------------实例创建之后----------------");
            this.infoLog();
        },
        beforeMount:function (){
            console.log("----------------组件挂载之前----------------");
            this.infoLog();
        },
        mounted:function (){
            console.log("----------------组件挂载完成----------------");
            this.infoLog();
        },
        beforeUpdate:function (){
            console.log("----------------组件修改之前----------------");
            this.infoLog();
        },
        updated:function (){
            console.log("----------------组件修改完成----------------");
            this.infoLog();
        },
        beforeDestroy:function (){
            console.log("----------------实例销毁之前----------------");
            this.infoLog();
        },
        destroyed:function (){
            console.log("----------------实例销毁完成----------------");
            this.infoLog();
        }

    })
    app.$data.message='vue!';//修改数据,触发beforeUpdate、updated函数
    // app.$destroy();
</script>

控制台下查看:

在这里插入图片描述

调用app.$destroy();方法

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值