美文网首页前端从入门到退坑
Vue 2.0生命周期和钩子函数的一些理解

Vue 2.0生命周期和钩子函数的一些理解

作者: 烛林小煜 | 来源:发表于2017-10-02 20:15 被阅读51次
  • 概述
    vue用了一阵子,对钩子函数和生命周期只是停留在简单的使用,不晓得为什么,接下来将更深入的了解一下,话不多说,走起
  • Vue的生命周期简介
    生命周期.png
    lifecycle.png
  • 其实吧,生命周期可以简单分为8部分
    beforeCreate(创建前),
    created(创建后),
    beforeMount(载入前),
    mounted(载入后),
    beforeUpdate(更新前),
    updated(更新后),
    beforeDestroy(销毁前),
    destroyed(销毁后)
  • 话不多说 上代码
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>
</head>
<body>

<div id="app">
     <p>{{ message }}</p>
</div>

<script type="text/javascript">
    
  var app = new Vue({
      el: '#app',
      data: {
          message : "xuxiao is boy" 
      },
       beforeCreate: function () {
                console.group('beforeCreate 创建前状态===============》');
               console.log("%c%s", "color:red" , "el     : " + this.$el); //undefined
               console.log("%c%s", "color:red","data   : " + this.$data); //undefined 
               console.log("%c%s", "color:red","message: " + this.message)  
        },
        created: function () {
            console.group('created 创建完毕状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el); //undefined
               console.log("%c%s", "color:red","data   : " + this.$data); //已被初始化 
               console.log("%c%s", "color:red","message: " + this.message); //已被初始化
        },
        beforeMount: function () {
            console.group('beforeMount 挂载前状态===============》');
            console.log("%c%s", "color:red","el     : " + (this.$el)); //已被初始化
            console.log(this.$el);
               console.log("%c%s", "color:red","data   : " + this.$data); //已被初始化  
               console.log("%c%s", "color:red","message: " + this.message); //已被初始化  
        },
        mounted: function () {
            console.group('mounted 挂载结束状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el); //已被初始化
            console.log(this.$el);    
               console.log("%c%s", "color:red","data   : " + this.$data); //已被初始化
               console.log("%c%s", "color:red","message: " + this.message); //已被初始化 
        },
        beforeUpdate: function () {
            console.group('beforeUpdate 更新前状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el);
            console.log(this.$el);   
               console.log("%c%s", "color:red","data   : " + this.$data); 
               console.log("%c%s", "color:red","message: " + this.message); 
        },
        updated: function () {
            console.group('updated 更新完成状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el);
            console.log(this.$el); 
               console.log("%c%s", "color:red","data   : " + this.$data); 
               console.log("%c%s", "color:red","message: " + this.message); 
        },
        beforeDestroy: function () {
            console.group('beforeDestroy 销毁前状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el);
            console.log(this.$el);    
               console.log("%c%s", "color:red","data   : " + this.$data); 
               console.log("%c%s", "color:red","message: " + this.message); 
        },
        destroyed: function () {
            console.group('destroyed 销毁完成状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el);
            console.log(this.$el);  
               console.log("%c%s", "color:red","data   : " + this.$data); 
               console.log("%c%s", "color:red","message: " + this.message)
        }
    })
</script>
</body>
</html>  

打开浏览器控制台,会发现

beforecreate:el和data并未初始化
created:完成了data数据的初始化,el没有
beforeMount :完成了el和data的初始化
mounted :完成了挂载
我们经常说的先挖坑,其实是vue虚拟dom,在mounted时才填坑的
update : 当我们使用其他方法修改了数据,vue会触发update
destroy : 使用destroy之后,dom仍然存在,但是不受vue控制了

  • 常见钩子函数的使用

beforecreate : 举个栗子:可以在这加个loading事件
created :在这结束loading,还做一些初始化,实现函数自执行,也可以向后台请求数据
mounted : 在这发起后端请求,拿回数据,配合路由钩子做一些事情
beforeDestory: 你确认删除XX吗?
destoryed :当前组件已被删除,清空相关内容

相关文章

网友评论

    本文标题:Vue 2.0生命周期和钩子函数的一些理解

    本文链接:https://www.haomeiwen.com/subject/zavtyxtx.html