• vue --生命周期


    相当简单的小例子理解生命周期

    1、beforeCreate:在实例初始化之后,数据观测和event/watcher事件配置之前调用

    <body>
        <div id="app">
            {{msg}}
        </div>
        <script src="vue.js"></script>
        <script>
            new Vue({
                el:"#app",
                data:{
                    msg:'hello world'
                },
                beforeCreate(){
                    console.log("beforeCreate");
                    console.log(this.$el);
                    console.log(this.$data);
                }
            })
        </script>
    </body>

    此时输出 :

                    

    2、created:实例创建成功后被立即调用,此时data中的数据显示出来了,然而,挂载阶段还没开始

    created(){
                    console.log("created");
                    console.log(this.$el);//undefined
                    console.log(this.$data);//有值了
                }

    此时输出:

                   

    3、beforeMount:在挂载之前被调用。数据中的data在模板中先占了一个位置,但还没有被渲染出来。

    beforeMount(){
                    console.log("beforeMount");
                    console.log(this.$el);//有值了
                    console.log(this.$data);//有值了
             
    console.log(document.getElementById("app").innerHTML);//{{msg}}此时是获取不到DOM元素的,并没有渲染完成!
                }

    此时输出:

               

    4、mounted:实例被挂载之后调用。获取DOM元素要在mounted阶段,在之前都是获取不到的。此时,模板中的data数据已经被渲染出来了。

    mounted(){
                    console.log("mounted");
                    console.log(this.$el);//有值了
                    console.log(this.$data);//有值了
                    console.log(document.getElementById("app").innerHTML);
                }

    此时输出:

                   

    接下来进行更改数据的操作,点击按钮时,msg的“hello world”更改成“你好”

    <div id="app">
            {{msg}}
            <button @click="change">点击改变</button>
        </div>
        <script src="vue.js"></script>
        <script>
            new Vue({
                el:"#app",
                data:{
                    msg:'hello world'
                },
                methods:{
                    change(){
                        this.msg='你好'
                    }
                },
        </script>
           

    5、beforeUpdate:此时虚拟DOM被更新,而真实DOM没有更新。适合在更新之前访问现有的DOM,比如手动移除已添加的事件监听器。

    beforeUpdate(){
                    console.log("beforeUpdate");
                    console.log(this.$data);//被更新
                    console.log(document.getElementById("app").innerHTML);//没有被更新
                },

    此时输出:

                  

    6、updated:此时真实DOM被更新

    updated(){
                    console.log("updated");
                    console.log(this.$data);//被更新
                    console.log(document.getElementById("app").innerHTML);//被更新
                }

    此时输出:

        

    体会:在合适的周期写合适的代码!!!!

  • 相关阅读:
    不同数据类型在不同编译器下字节大小
    gbk/utf8/gb2312 编码中汉字字母数字所占字节数
    剑指Offer-12 矩阵中的路径
    螺旋矩阵(数组)问题(网易考点)
    C++ 多继承导致的指针偏移问题
    面试题--链表实现插入排序
    C++ 二叉树的深度优先遍历(前中后序)以及广度优先遍历
    (转)软连接和硬链接作用以及区别
    TCP/IP网络五层结构理解以及数据传输流程的理解图示
    常考知识点:进程与线程,多进程与多线程
  • 原文地址:https://www.cnblogs.com/zx-fjs/p/12760286.html
Copyright © 2020-2023  润新知