A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄大胖真帅 初级黑马   /  2019-10-11 16:23  /  1282 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

vue一共8个生命周期分别是① beforeCreate在实例初始化之后,数据观测(data observer,开始监控Data对象数据变化)和初始化事件(init event,Vue内部初始化事件)之前被调用。② created在实例已经创建完成之后被调用。实例已完成以下的配置:数据观测(data observer),属性和方法的运算,event事件回调。挂载阶段尚未开始,$el 属性不可见。③ beforeMount在挂载开始之前被调用。相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。注意此时还没有挂载html到页面上。④ mounted在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。此时模板中的html渲染到了html页面中,此时一般可以做一些Ajax操作。注意mounted只会执行一次。⑤ beforeUpdate在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。⑥ updated在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。⑦ 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: "Vue生命周期学习理解"            },            beforeCreate: function () {                console.group('beforeCreate 创建前状态');                console.log("%c%s", "color:red", "el     : " + this.$el);                console.log("%c%s", "color:red", "data   : " + this.$data);                console.log("%c%s", "color:red", "message: " + this.message)            },            created: function () {                console.group('created 创建完毕状态');                console.log("%c%s", "color:red", "el     : " + this.$el);                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>
参考博客园-tom_lo

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马