zoukankan      html  css  js  c++  java
  • 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);//被更新
                }

    此时输出:

        

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

  • 相关阅读:
    libgdx学习记录21——Box2d物理引擎之碰撞Contact、冲量Impulse、关节Joint
    libgdx学习记录20——多线程MultiThread资源处理
    上google的方法
    libgdx学习记录19——图片动态打包PixmapPacker
    libgdx学习记录18——Box2d物理引擎
    libgdx学习记录17——照相机Camera
    libgdx学习记录16——资源加载器AssetManager
    libgdx学习记录15——音乐Music播放
    "_ACFacebookAppIdKey"
    IPhone之模型对象归档
  • 原文地址:https://www.cnblogs.com/zx-fjs/p/12760286.html
Copyright © 2011-2022 走看看