vue生命周期的钩子函数介绍


前言

在vue中生命周期的学习对我们之后的学习和理解非常重要本片将讲解vue生命周期中的钩子函数


一、生命周期的简单介绍

vue的生命周期其实就是一个vue实例从创建到销毁的一个过程

二、生命周期中的钩子函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app">
        <div class="box">name:{{ name }}</div>
        <ul>
            <li v-for="( item,index ) in arr" :key="index">{{ item }}</li>
        </ul>
        <button @click="name='翠花'">name=翠花</button>
    </div>
    <button onclick="destroy()">销毁</button>
    <script>
        // 虚拟dom
        // { tagname:"div",attr:{ class:"box" },chilren:{} }
        // { tagname:"div",attr:{ class:"box1" },chilren:{} }
       var vm =  new Vue({
            // el:"#app",
            data:{
                name:"狗蛋",
                arr:["关羽","吕布","ll"]
            },
            // 1.组件实例创建之前
            beforeCreate() {
                console.group();
                console.log("el",this.$el); //undefined
                console.log("data",this.$data); //undefined
                console.log("data",this.name); //undefined
                console.groupEnd()
            },

            // 2.创建完成  不能操作节点,但是可以操作数据,所以可以发送请求等
            created() {
                console.group();
                console.log("el",this.$el); //undefined
                console.log("data",this.$data); // {}
                console.log("data",this.name); //狗蛋 
                console.groupEnd()
            },
            // 3.挂载之前
            beforeMount() {
                console.group();
                console.log("el",this.$el); // 找到了节点,但是没有完成挂载
                console.log("data",this.$data); // {}
                console.log("data",this.name); //狗蛋 
                console.groupEnd()
            },
            // 4.挂载完成  都可以使用  
            mounted() {
                console.group();
                console.log("el",this.$el); // 变量解析了
                console.log("data",this.$data); // {}
                console.log("data",this.name); //狗蛋 
                console.groupEnd()
            },
            // 5.视图更新之前(data的数据改变)
            beforeUpdate() {
                console.log(this.name);
                console.log("beforeUpdate");
            },
            // 6.视图更新完成
            updated(){
                console.log(this.name);
                console.log("updated");
            },
            // 7.销毁之前
            beforeDestroy() {
                console.log("beforeDestroy");
            },
            // 8.销毁完成
            destroyed() {
                console.log("destroyed");
            },
            
            
        }).$mount("#app")
        function  destroy(){
            vm.$destroy();//销毁实例
        }

    </script>
</body>
</html>

2,1 beforeCreate函数

这个函数时期是在刚刚创建完vue实例,data,methods等都存在了,但是还没有初始化,里面没有值和方法
在这里插入图片描述

2.2 created函数

这个函数的时期data中的数据和methods已经有初始化完成,可以调用data中的数据和方法了,这个时期一般用于发送请求.在这个时期是不能够操作dom的,但是如果硬是要在这个时期操作dom的话可以使用netTick()去操作dom
在这里插入图片描述

2.3 beforemount

这个时期在模板已经完成编译和注册,组件都已经准备好了,但是还没有向挂载点渲染
在这里插入图片描述

2.4 mounted

这个钩子函数时期,已经将组件渲染到了视图上,在这个阶段已经可以对dom节点进行操作了
在这里插入图片描述

如果存在keep-alive组件的话

如果存在keep-alive的话会多出两个生命周期 actived 和deactivated 就是激活状态和非激活状态
keep-alive可以保存组件状态并缓存,第一次进入页面还不会进入到这个生命周期,必须要等组件缓存完毕之后才会进入这个生命周期中去.

2.5 beforeupdate

这个时期在逻辑层上data中的数据已经更新完成了,但是还没有渲染到页面中去

2.6 updated

在这个钩子函数时期,data中的数据与页面中的数据已经同步,页面上的数据已经更新

2.7 beforedestory

在这个钩子函数时期,vue实例已经从运行阶段进入到了销毁阶段但是这个时候还没有真正的销毁,vue里面的data等还能继续使用

2.8 destoryed

vue实例已经完全销毁里面所有的东西都不能使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值