• vue之生命周期的一点总结


    vue的生命周期的过程提供了我们执行自定义逻辑的机会,好好理解它的生命周期,对我们很有帮助。

    一、vue实例的生命周期

    二、生命周期描述:(参考截图

    三、例子

    window.vm = new Vue({
    	el: '#app',
    	data: {activityTime:'活动时间:5月24日-5月30日'},
        beforeCreate:function(){
                console.log("beforeCreate创建前")
                console.log(this.data)     //undefined
                console.log(this.$el)      //undefined
        },
        created:function(){
            console.log("created已创建") 
            console.log(this.activityTime)  //活动时间:5月24日-5月30日
            console.log(this.$el)           //undefinded
        },
        beforeMount:function(){
            console.log("beforeMount之前")  
            console.log(this.activityTime)  //活动时间:5月24日-5月30日
            console.log(this.$el)           //虚拟dom
        },
        mounted:function(){
            console.log("mounted")          //。。。有了
            console.log(this.activityTime)  //真实dom
            console.log(this.$el)
        },
        beforeUpdate:function(){
            console.log("beforeUpdate更新前");
    
        },
        updated:function(){
            console.log("beforeUpdate更新完成");
        },
        beforeDestroy:function(){
            console.log("beforeDestroy销毁前")
            console.log(this.activityTime)
            console.log(this.$el)
        },
        destroyed:function(){
            console.log("destroyed已销毁")
            console.log(this.activityTime)
            console.log(this.$el)
        }
    
    }); 

    结果如图:

    四、 单个组件声明周期

    1. 初始化组件时,仅执行了beforeCreate/Created/beforeMount/mounted四个钩子函数

    2. 当改变data中定义的变量(响应式变量)时,会执行beforeUpdate/updated钩子函数

    3. 当切换组件(当前组件未缓存)时,会执行beforeDestory/destroyed钩子函数

    4. 初始化和销毁时的生命钩子函数均只会执行一次,beforeUpdate/updated可多次执行

    五、父子组件的生命周期  

    1. 仅当子组件完成挂载后,父组件才会挂载

    2. 当子组件完成挂载后,父组件会主动执行一次beforeUpdate/updated钩子函数(仅首次)

    3. 父子组件在data变化中是分别监控的,但是在更新props中的数据是关联的

    4. 销毁父组件时,先将子组件销毁后才会销毁父组件

    六、兄弟组件

    1. 组件的初始化(mounted之前)分开进行,挂载是从上到下依次进行

    2. 当没有数据关联时,兄弟组件之间的更新和销毁是互不关联的

    七、其他

        1、beforeCreate 此时$el、data 的值都为undefined
           一般可以在这里加上加载事件,向后台获取页面需要的内容

      2、created创建之后,此时可以拿到data的值,但是$el依旧为undefined

         created阶段的ajax请求与mounted请求的区别:前者页面视图未出现,如果请求信息过多,页面会长时间处于白屏状态。

      3、 beforeMount之前,$el的值为“虚拟”的元素节点

      4、 mounted之后,“虚拟”dom节点被真实的dom节点替换,并将其插入到dom树中,于是在触发mounted时,
               可以获取到$el为真实的dom元素();但是它不会承诺所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染,完毕,可以用 vm.$nextTick()

           5、destoryed 清空相关内容

  • 相关阅读:
    自适应行高
    IOS各类问题
    KVC
    数据模型的构建及懒加载数据
    NSBundle
    九宫格布局获取行/列索引
    QLineEdit
    QLabel
    排序算法
    SpringBoot配置文件-yaml
  • 原文地址:https://www.cnblogs.com/leaf930814/p/6842257.html
Copyright © 2020-2023  润新知