(四)VUE生命周期

   Vue 实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,即 Vue 实例从创建到销毁的过程。同时,在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
Vue生命周期

  • 创建阶段
    • beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化 data 和 methods 等属性。
    • created:实例已经在内存中初始化完成,此时,data 和 methods 等属性已经初始化完成,但还没有开始编译模板。
    • beforeMount:此时,已经完成了模板的编译,但是还没有挂载到页面中。
    • mounted:此时,已经将编译好的模板挂载到了页面中指定的容器中。
  • 运行阶段
    • beforeUpdate:页面状态更新之前执行,此时,Vue实例属性中的状态值是最新的,但是界面上显示的数据还是旧值,因为此时还没有开始重新渲染DOM结点。
    • updated:页面更新完毕之后调用,此时Vue实例的属性的状态值与页面上显示的数据完成同步,界面重新渲染完成。
  • 销毁阶段
    • beforeDestroy:Vue实例销毁前调用,此时,实例仍然完全可用。
    • destroyed:Vue实例销毁后调用,此时,Vue实例指示的所有东西都会解除绑定,所有的事件监听器都会被移除,所有的子实例也会被销毁。

   示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../vue.min.js"></script>
</head>
<body>
    <div id="app">
        <p id="app_p">{{ msg }}</p>

        <!-- 更新msg -->
        <input type="button" value="Change msg" @click="msg = 'no'">
    </div>

    <script>
        var vm = new Vue({
            el: "#app",
            data: {
                msg: "ok"
            },
            beforeCreate: function(){
                // undefined
                console.log("beforeCreate()--msg:" + this.msg)  
            },
            created: function(){
                // ok
                console.log("created()--msg:" + this.msg)   
            },
            beforeMount: function(){
                // {{ msg }}
                console.log("beforeMount()--" + document.getElementById("app_p").innerText)
            },
            mounted: function(){
                // ok
                console.log("mounted()--" + document.getElementById("app_p").innerText)
            },
            beforeUpdate: function(){
                // ok
                console.log("beforeUpdate()--" + document.getElementById("app_p").innerText)
            },
            updated: function(){
                // no
                console.log("updated()--" + document.getElementById("app_p").innerText)
            }
        })
    </script>
</body>
</html>
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值