VUE周期

官网

https://cn.vuejs.org/v2/guide/instance.html

 

 

概述

created 和 beforeCreate

 

    - #### A 可以操作数据 B 数据没有初始化

 

mounted 和 beforeMount

 

    - #### A 可以操作DOM B 还未生成DOM

 

updated 和 beforeUpdate

 

    - #### A 可以获取最终数据 B 可以二次修改

destroyed 和 beforeDestroy

性能调优:频繁销毁创建的组件,比如页面中部分内容显示与隐藏,但是用的是v-if,使用内置组件**<keep-alive></keep-alive>包裹, 被其包裹的组件,在v-if=false的时候,不会销毁,而是停用, v-if="true" 不会创建,而是激活,避免频繁创建组件对象的性能损耗,组件的激活和停用,activated 和 deactivated

代码1


<!DOCTYPE html>

<html>

<head>

    <title>vue的生命周期</title>

</head>

<body>

    <div id="app">

      

    </div>



    <script type="text/javascript" src="vue.js"></script>

    <script type="text/javascript"  >

       var Test={

           template:`

              <div>我是Test组件{{ msg }}

              </div>

           `,

           data(){

              return{

                  msg:'HELLO VUE'

              }

           }



       }     

       new Vue({

           el:'#app',

           components:{

              Test  

           },

           template:`

              <div>

                    <test ></test>

              </div>

           `,

           data(){

              return {

               

              }

           }

       })



    </script>

</body>

</html>

运行效果

代码2(组件创建前与组件创建后)

var Test={

           template:`

              <div>我是Test组件{{ msg }}

              <button @click="msg+='1'">msg+1</button>

              </div>

           `,

           data(){

              return{

                  msg:'HELLO VUE'

              }

           },

          //组件创建前

         beforeCreate(){

            console.log('组件创建前')

            console.log(this.msg)

            //undefine

         },

         //组件创建后

         created(){

            console.log('组件创建后')

            console.log(this.msg)

            //HELLO VUE

         },

            ……

       }

运行效果

代码3(Dom挂载前与Dom挂载后)

var Test={

           template:`

              <div>我是Test组件{{ msg }}

              </div>

           `,

           data(){

              return{

                  msg:'HELLO VUE'

              }

           },



           //Dom挂载前

           beforeMount(){

               console.log('Dom挂载前')

               console.log(document.body.innerHTML)

           },

            //Dom挂载后

           mounted(){

               console.log('Dom挂载后')

               console.log(document.body.innerHTML)

           }

       }  

运行效果

 

代码4(数据更新前与数据更新后)

 var Test={

           template:`

              <div>我是Test组件{{ msg }}

              <button @click="msg+='1'">msg+1</button>

              </div>

           `,

           data(){

              return{

                  msg:'HELLO VUE'

              }

           },

           //点击button后

           //基于数据更新前

           beforeUpdate(){

                  console.log('数据更新前')

                  console.log(document.body.innerHTML)

           },



           //基于数据更新后

           updated(){

                  console.log('数据更新后')

                  console.log(document.body.innerHTML)

           }

       }

运行效果

 

代码5(销毁前和销毁后)

##test

       var Test={

           template:`

              <div>我是Test组件{{ msg }}

              <button @click="msg+='1'">msg+1</button>

              </div>

           `,

           data(){

              return{

                  msg:'HELLO VUE'

              }

           },

           //组件创建前

           beforeCreate(){

              console.log('组件创建前')

              console.log(this.msg)

               //undefine

           },

           //组件创建后

           created(){

              console.log('组件创建后')

              console.log(this.msg)

              //HELLO VUE

           },

           //销毁前

           beforeDestroy(){

              console.log('销毁前')

           },

           //销毁后

           destroyed(){

              console.log('销毁后')

           }

       }

##

       new Vue({

           el:'#app',

           components:{

              Test  

           },

           template:`

              <div>

                  <test v-if='testshow'></test></br>

                  <button @click='clickbut'>销毁组件</button>

              </div>

           `,

           data(){

              return {

               testshow:true

              }

           },

           methods:{

              clickbut(){

                  this.testshow=!this.testshow

              }

           }

       })

运行效果

 

 

 代码6(激活与停用)

##

var Test={

           template:`

              <div>我是Test组件{{ msg }}

              <button @click="msg+='1'">msg+1</button>

              </div>

           `,

           data(){

              return{

                  msg:'HELLO VUE'

              }

           },

           //组件创建前

           beforeCreate(){

              console.log('组件创建前')

              console.log(this.msg)

              //undefine

           },

           //组件创建后

           created(){

              console.log('组件创建后')

              console.log(this.msg)

              //HELLO VUE

           },

           //销毁前

           beforeDestroy(){

              console.log('销毁前')

           },

           //销毁后

           destroyed(){

              console.log('销毁后')

           },

            //组件停用

           deactivated(){

              console.log('组件停用')

           },

           //组件激活

           activated (){

              console.log('组件激活')

           }

       }     

##

       new Vue({

           el:'#app',

           components:{

              Test  

           },

           template:`

              <div>

                  <keep-alive><test v-if='testshow'></test></keep-alive></br>

                  <button @click='clickbut'>销毁组件</button>

              </div>

           `,

           data(){

              return {

               testshow:true

              }

           },

           methods:{

              clickbut(){

                  this.testshow=!this.testshow

              }

           }

       })

运行效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值