zoukankan      html  css  js  c++  java
  • vue生命周期源码浅析

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4     <meta charset="UTF-8" />
      5     <title>Document</title>
      6 </head>
      7 <body>
      8     <div id="app">
      9         <h2 id="h2">{{msg}}</h2>
     10         <button @click="msg = 'Hello Marte'">改变Msg</button>
     11         <hr>
     12 
     13         <!-- <Child v-if="isShow"></Child> -->
     14         <!-- keep-alive组件可以将内容进行缓存,提升性能 -->
     15         <keep-alive v-if="isShow">
     16             <Child></Child>
     17         </keep-alive>
     18         <button @click="isShow = !isShow">上下树</button>
     19     </div>
     20 </body>
     21 <script type="text/javascript" src="js/vue.js"></script>
     22 <script type="text/javascript">
     23 
     24     Vue.component('Child', {
     25         template: '<div>我是Child子组件</div>',
     26         beforeDestroy(){
     27             console.log("组件销毁前")
     28         },
     29         destroyed(){
     30             console.log("组件销毁后")
     31         },
     32         activated(){
     33             console.log('keep-alive组件激活(上树)了')
     34         },
     35         deactivated(){
     36             console.log('keep-alive组件停用(下树)了')
     37         }
     38 
     39     })
     40 
     41     // 创建Vue实例,得到ViewModel
     42     var vm = new Vue({
     43         el: '#app',
     44         data: {
     45             msg: 'Hello',
     46             isShow: true
     47         },
     48         methods: {
     49             show(){
     50                 console.log('执行show方法')
     51             }
     52         },
     53 
     54         /********** 创建实例阶段的生命周期(4个) ***********/
     55         beforeCreate(){
     56             // 这是我们遇到的第1个生命周期函数,表示实例被创建出来之前会被触发
     57             // 在此阶段生命周期中,DOM、data 和 methods 还没被初始化
     58             console.log(this.$el);  //undefined
     59             console.log(this.msg);  //undefined
     60             // this.show();    //this.show is not a function
     61         },
     62 
     63         created(){
     64             // 在此阶段生命周期中,data 和 methods 已经被初始化完毕,但DOM还没有
     65             // 如果要调用methods的方法 和 操作data中的数据,最早也只能在 created 中操作
     66             console.log(this.$el);  //undefined
     67             console.log(this.msg);  //Hello
     68             this.show();    //可以被触发了
     69         },
     70 
     71         beforeMount(){
     72             // 遇到的第3个生命周期,表示模板已经在内存中编译完成,但还没把模板渲染到页面中
     73             // 页面中的内容还没被真正替换,依然是旧的,只是之前写的模板字符串 "{{msg}}"
     74             console.log(document.getElementById('h2').innerHTML)
     75         },
     76 
     77         mounted(){
     78             // 第4个生命周期,表示内存中的模板,已经真实挂载到页面上,用户可以看见渲染好的页面了
     79             // 它是实例创建的最后一个生命周期,当执行完毕mounted就表示实例已经都完成创建了
     80             // 如果没有其他操作,这个实例就静静的待在内存中
     81             console.log(document.getElementById('h2').innerHTML);  //Hello
     82         },
     83 
     84         beforeUpdate(){
     85             // 此阶段表示页面还没被更新,但数据已经更新了
     86             // 所以当执行beforeUpdate时,页面显示的数据还是旧的
     87             // 但此时data数据是新的,不过页面还没和最新的数据进行同步
     88             console.log('页面上的内容:', document.getElementById('h2').innerHTML)
     89             console.log('data中的msg数据:', this.msg)
     90         },
     91 
     92         updated(){
     93             // update生命周期被执行后,页面和data数据已经同步,都是最新的
     94             console.log('页面上的内容:', document.getElementById('h2').innerHTML)
     95             console.log('data中的msg数据:', this.msg)
     96         }
     97 
     98     })
     99 </script>
    100 </html>

    https://www.cnblogs.com/happ0/p/8075562.html

  • 相关阅读:
    如何解决由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。
    客户端中检测到有潜在危险的Request.Form 值的处理办法 VS2010 .NET 4.0
    VS2010中解决数据集和ObjectDataSource无法自动生成UPDATA和DELETE方法
    使用Eclipse的几个必须掌握的快捷方式
    使用OjectDataSource数据源绑定ListView 高效分页
    NVIDIA SDK 10
    [转]我要的不多
    本月推荐电影
    加/解密
    GDC 2007 Presentations of NV now available.
  • 原文地址:https://www.cnblogs.com/xuyx/p/10875331.html
Copyright © 2011-2022 走看看