vue的生命周期

1个函数(所有的生命周期都是函数(function)类型)

      所有生命周期的钩子函数都是自动绑定this的上下文实例中,所以在函数内可以访问vue数据操作vue属性

     不能使用箭头函数定义生命周期的方法,箭头函数是绑定父级的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div id="app">{{msg}}</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script type="text/javascript">
    见下文
</script>
</body>
</html>

script内容如下 

var vm=new Vue({
        el:"#app",
        data:{
            msg:123
        },
        beforeCreate:function () {
            console.log("beforeCreate")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
            this.$nextTick(function () {
                console.log(this.$data+"--------")
            })
        },
        created:function () {
            console.log("创建完成")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        beforeMount:function () {
            console.log("挂载前")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        mounted:function () {
            console.log("挂载")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        beforeUpdate:function () {
            console.log("更新")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        updated:function () {
            console.log("updated")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        activated:function(){
            console.log("激活组件")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        activated:function(){
            console.log("关闭组件")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        beforeDestroy:function () {
            console.log("销毁前")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        destroyed:function () {
            console.log("销毁")
            console.log(this.$el)
            console.log(this.$data)
            console.log(this.msg)
        },
        errorCaptured:function () {
            console.log("收集开发坏境中的错误,并且可以捕获到子组件的错误")
        }
    })

注:没有数据更新和销毁,所以只会执行到挂载
beforeCreate()
//     vue实例初始化之后,数据观测和事件配置之前被调用
//     数据没有监听,没有绑定到vue对象实例,没有挂载对象,更娶不到date中的数据
//     没有数据更新和销毁   只会执行到挂载
created:实例化完成后调用,这一步已经完成如下配置:
// 数据观测,属性和方法的运算,事件回调,但是挂载还没开始,所以$el属性在该阶段不可见
// 一般会在Created函数中调用ajax获取页面初始化所需的数据
beforeMount:挂载之前调用,相关的渲染函数还没有被调用,该函数在服务器渲染期间不会被调用,还没有放入Dom结构中(还没有挂载)
mounted:el被新创建的vm.$el所替换,并且挂载到实力上,如果root实例文档内元素,当挂在时候vm.$el也会在文档里
执行结束,this.¥el.元素就可以看到了
beforeupdate:数据更新的时候调用,发生在虚拟dom打补丁之前,用在更新之前访问现有dom

 

beforeupdate:数据更新的时候调用,发生在虚拟dom打补丁之前,用在更新之前访问现有dom // 如:手动移除事件监听器 // 该函数在服务器端渲染器件不会被调用,应为只有初次渲染才会在服务端进行
// updated:数据的改变导致虚拟dom会重新渲染并打补丁,在这之后就会调用该函数
// 在这个函数中通产可以做依赖于dom的操作
//
//     注意:update不能保证所有的子组件都会被更新重绘
//     如果需要所有的视图都重回,也可以使用$nextTick替换updated
//     updated:function () {
//         this.$nextTick(function(){
//             ...
//         })
//     }

 

activated:组件激活的时候调用,服务器渲染器件不会被调用
deactivated:组件停用的时候调用
beforeDestroy:在vue实例被销毁之前调用,在此阶段vue实例仍能使用
destroyed:调用vm.$destroy();

控制台输出

vue被销毁
// 事件监听移除,自实例也会被销毁
errorCaptured;vue.2.5+新增
// 当捕获子组件的错误时会被笑拥
//     接受到三个参数
//         错误对象:Error;  发生错误的组件,以及错误无信息
        // 如果该函数返回false,就可以阻止该错误向上继续传播
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值