码迷,mamicode.com
首页 > 其他好文 > 详细

Vue生命周期

时间:2018-08-11 23:25:49      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:插入   元素   init   device   date   lan   ===   生命周期   charset   

Vue生命周期

参考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="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        {{data}}
    </div>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                data: "这是测试",
                info: "none"
            },
            beforeCreate() {
                console.log("创建前=======");
                console.log(this.data);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            created() {
                console.log("已创建=========");
                console.log(this.data);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            beforeMount() {
                console.log("mount之前==========");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            mounted() {
                console.log("mounted======");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            beforeUpdate() {
                console.log("更新前=========");
                console.log("这是一条分割线==========");
            },
            updated() {
                console.log("更新完成=======");
                console.log("这是一条分割线==========");
            },
            beforeDestroy() {
                console.log("销毁前========");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
            destroyed() {
                console.log("已销毁=========");
                console.log(this.info);
                console.log(this.$el);
                console.log("这是一条分割线==========");
            },
        })
    </script>
</body>
</html>

结果图:
技术分享图片
由图可知:

  1. beforeCreate此时$el,data的值都为undefined
  2. 创建之后,此时可以拿到data的值,但是$el依旧为undefined
  3. mount之前,$el的值为"虚拟"的元素节点
  4. mount之后,mounted之前,"虚拟"的dom节点被真是的dom节点替换,并将其插入到dom树中,于是在出发mounted时,可以获取到\(el为真实的dom元素 app.\)el === document.getElementById("app")//true

继续,现在修改data的值,更新视图:
技术分享图片
触发了beforeUpdate和updated
接着,继续执行销毁app.$destroy()
技术分享图片
总结一下,简化后的图为:
技术分享图片

Vue生命周期

标签:插入   元素   init   device   date   lan   ===   生命周期   charset   

原文地址:https://www.cnblogs.com/zzr-stdio/p/9461444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!