生命周期分为三个阶段

在这里插入图片描述
1.挂载阶段:
挂载阶段里又分别触发四个钩子函数,该阶段当中的钩子只执行一次
beforeCreate:创建之前
created:创建完成
beforeMount:挂载之前
mounted:完成挂载
看以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="lib/vue.js"></script>
</head>
<body>
<div id="myApp">
    <div id="userName" ref="userInfo">{{userName}}</div>
</div>
</body>
<script>
    new Vue({
        data:{
            userName:"zhangsan"
        },
        methods:{
            fn(){
                console.log(this.userName);
            }
        },
        beforeCreate(){
            console.group("*************************beforeCreate")
            console.log(this.userName);// undefined
            console.log(this.fn);// undefined
            console.log(this.$refs.userInfo);// undefined
            console.log(document.querySelector("#userName"))//
            console.groupEnd();
        },
        created(){
            console.group("*************************created")
            console.log(this.userName);// undefined
            console.log(this.fn);// undefined
            console.log(this.$refs.userInfo);// undefined
            console.log(document.querySelector("#userName"))// null
            console.groupEnd();
        },
        beforeMount(){
            console.group("*************************beforeMount")
            console.log(this.userName);// undefined
            console.log(this.fn);// undefined
            console.log(this.$refs.userInfo);// undefined
            console.log(document.querySelector("#userName"))// null
            console.groupEnd();
        },
        mounted(){
            console.group("*************************mounted")
            console.log(this.userName);// undefined
            console.log(this.fn);// undefined
            console.log(this.$refs.userInfo);// undefined
            console.log(document.querySelector("#userName"))// null
            console.log(this.$refs.userInfo === document.querySelector("#userName"))
            console.groupEnd();
        }
    }).$mount("#myApp")
</script>
</html>

2.运行阶段:
beforeUpdate:更新VIEW之前
updated:更新VIEW之后

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="lib/vue.js"></script>
</head>
<body>
<div id="myApp">
    <input type="text" v-model="userName">
    <div id="userName" ref="userInfo">{{userName}}</div>
</div>
</body>
<script>
    new Vue({
        data:{
            userName:"zhangsan"
        },
        methods:{
            fn(){
                console.log(this.userName);
            }
        },
        // 视图的更新
        beforeUpdate(){
            console.group("*************************beforeUpdate")
            console.log(this.userName);
            console.log(this.fn);
            console.log(this.$refs.userInfo.innerHTML);
            console.log(document.querySelector("#userName").innerHTML)
            console.groupEnd();
        },
        updated(){
            console.group("*************************updated")
            console.log(this.userName);
            console.log(this.fn);
            console.log(this.$refs.userInfo.innerHTML);
            console.log(document.querySelector("#userName").innerHTML)//
            if(this.userName=== "zhaoliu"){
                this.userName= "赵六"
            }
            console.groupEnd();
        }
    }).$mount("#myApp")
</script>
</html>

3.销毁阶段
beforeDestory:销毁之前
destoryed:销毁之后

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="lib/vue.js"></script>
</head>
<body>
<input type="button" value="销毁" onclick="fn()">

<div id="myApp">
    <input type="text" v-model="userName">
    <h1>{{num}}</h1>
    <div id="userName" ref="userInfo">{{userName}}</div>
</div>
</body>
<script>
    const vm = new Vue({
        data:{
            userName:"zhangsan",
            num:0,
            timer:null
        },
        methods:{
            fn(){
                console.log(this.userName);
            }
        },
        mounted(){
           this.timer = setInterval(()=>{
               console.log(this.num)
               this.num+=1;
           },100)
        },
        // 视图的更新
        beforeDestroy(){

            console.group("*************************beforeDestroy")
            console.log(this.userName);
            console.log(this.fn);
            console.log(this.$refs.userInfo.innerHTML);
            console.log(document.querySelector("#userName").innerHTML)
            console.groupEnd();
        },
        destroyed(){
            clearInterval(this.timer);
            console.group("*************************destroyed")
            console.log(this.userName);
            console.log(this.fn);
            console.log(this.$refs.userInfo);
            console.log(document.querySelector("#userName").innerHTML)//
            console.groupEnd();
        }
    }).$mount("#myApp");
    function fn() {
        vm.$destroy();
    }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值