美文网首页
vue1.0和2.0的生命周期详解

vue1.0和2.0的生命周期详解

作者: yanghanbin_it | 来源:发表于2017-06-09 10:22 被阅读0次

Vue#1.0和#2.0生命周期详解


  • 1.0 生命周期


    image
    • 2.0 生命周期
    image image
两个版本对比
image
vue的生命周期各阶段都做了什么?

beforeCreate 实例创建前:这个阶段实例的data、methods是读不到的

created 实例创建后:这个阶段已经完成了数据观测(dataobserver),属性和方法的运算,watch/event 事件回调。mount挂载阶段还没开始,$el属性目前不可见,数据并没有在DOM元素上进行渲染
beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
mounted:el选项的DOM节点被新创建的vm.$el替换,并挂载到实例上去之后调用此生命周期函数。此时实例的数据在DOM节点上进行渲染

beforeUpdate:数据更新时调用,但不进行DOM重新渲染,在数据更新时DOM没渲染前可以在这个生命函数里进行状态处理

updated:这个状态下数据更新并且DOM重新渲染,当这个生命周期函数被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。当实例每次进行数据更新时updated都会执行

beforeDestory:实例销毁之前调用。

destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

<!DOCTYPE html>
<html>
<head>
    <title>钩子函数</title>
    <script type="text/javascript" src="vue_2.2.4.js"></script>
<body>

<div id="app">
    <p>{{ message }}</p>
    <input type="button" @click="change" value="更新数据" />
    <input type="button" @click="destroy" value="销毁" />
</div>

<script type="text/javascript">
    var vm = new Vue({
        el: '#app',
        data: {
            message : "Welcome Vue"
        },
        methods:{
            change() {
                this.message = 'Datura is me';
            },
            destroy() {
                vm.$destroy();
            }
        },
        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);//undefined
        },
        created: function () {
            console.group('created 创建完毕状态===============》');
            console.log("%c%s", "color:red","el     : " + this.$el); //undefined
            console.log("%c%s", "color:green","data   : " + this.$data); //[object Object]  =>  已被初始化
            console.log("%c%s", "color:green","message: " + this.message); //Welcome Vue  =>  已被初始化
        },
        beforeMount: function () {
            console.group('beforeMount 挂载前状态===============》');
            console.log("%c%s", "color:green","el     : " + (this.$el)); //已被初始化
            console.log(this.$el); // 当前挂在的元素
            console.log("%c%s", "color:green","data   : " + this.$data); //已被初始化
            console.log("%c%s", "color:green","message: " + this.message); //已被初始化
        },
        mounted: function () {
            console.group('mounted 挂载结束状态===============》');
            console.log("%c%s", "color:green","el     : " + this.$el); //已被初始化
            console.log(this.$el);
            console.log("%c%s", "color:green","data   : " + this.$data); //已被初始化
            console.log("%c%s", "color:green","message: " + this.message); //已被初始化
        },
        beforeUpdate: function () {
            alert("更新前状态");
            console.group('beforeUpdate 更新前状态===============》'); //这里指的是页面渲染新数据之前
            console.log("%c%s", "color:green","el     : " + this.$el);
            console.log(this.$el);
            console.log("%c%s", "color:green","data   : " + this.$data);
            console.log("%c%s", "color:green","message: " + this.message);
            alert("更新前状态2");
        },
        updated: function () {
            console.group('updated 更新完成状态===============》');
            console.log("%c%s", "color:green","el     : " + this.$el);
            console.log(this.$el);
            console.log("%c%s", "color:green","data   : " + this.$data);
            console.log("%c%s", "color:green","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>

相关文章

  • vue1.0和2.0的生命周期详解

    Vue#1.0和#2.0生命周期详解 1.0 生命周期image2.0 生命周期imageimage 两个版本对比...

  • vue学习大纲2-生命周期,计算属性

    实战:留言板 生命周期 钩子函数 vue1.0 生命周期 vue2.0 生命周期 生命周期图地址 防止闪烁的指令 ...

  • 2.vue生命周期钩子

    vue2.0生命周期图文详解 什么是生命周期:

  • 学习链接

    vue-router教程总结 vue生命周期和钩子函数 详解vue生命周期 Vue2.0八——知识点整理 vuex...

  • vue1.0与vue2.0路由的区别

    个人总结——vue1.0与vue2.0路由的区别 vue1.0 html部分———— 主页 跳转链接 ...

  • VUE初级入门实践

    VUE概述 生命周期 指令 内置指令 自定义指令 过滤器 内置过滤器 VUE1.0版本 VUE2.0版本(无内置过...

  • vue2.0与vue1.0中的区别1

    vue2.0与vue1.0中的区别1:每个组件模板中不在支持片段代码 在vue1.0 中的模板template中可...

  • Vue学习知识点

    1、v-if 和 v-show 2、vue 2.0 不支持 $remove 方法、$index3、vue1.0 -...

  • vue生命周期

    vue生命周期详: vue生命周期详解图: vue生命周期详解代码展示:

  • vue1.0~2.0升级生命周期

    一、生命周期1、1.0的生命周期: 下图是官方关于1.0生命周期的流程图: 2、2.0的生命周期 下图是官方关于2...

网友评论

      本文标题:vue1.0和2.0的生命周期详解

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