博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue 基础篇(三):Vue生命周期理解
阅读量:6095 次
发布时间:2019-06-20

本文共 4012 字,大约阅读时间需要 13 分钟。

一、生命周期图

二、钩子函数讲解

实例code:

{
{message}}

var vm = new Vue({ el: '#app', data: { message: 'Vue的生命周期' }, 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('真实dom结构:' + document.getElementById('app').innerHTML); 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('真实dom结构:' + document.getElementById('app').innerHTML); 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) } })复制代码
See the Pen by madman0621 ( ) on .

1、beforeCreate

  • 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

2、created

  • 在进行初始化事件、数据观测之后调用created。此时的data属性已经进行了数据绑定

3、beforeMount

  • 在创建$el成员并且编译HTML模版之后调用beforeMount。此时的HTML还没有挂载到页面上,还是JavaScript中的虚拟DOM形式存在。

4、mounted

  • 在将编译好的HTML挂载到页面之后调用mounted。此时页面内容显示已经正常。

5、beforeUpdate

  • 在触发对应组件的重新渲染,但是此时页面实际的DOM内容还没有开始改变时调用beforeUpdate。此时页面的DOM内容还未更新

6、updated

  • 在触发对应组件的重新渲染并且页面实际的DOM内容改变之后调用beforeUpdate。此时页面的DOM内容已经更新完毕

7、beforeDestroy

  • 在实例销毁之前调用。在这一步,实例仍然完全可用。

8、destroyed

  • 在Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

三、编译HTML模板优先级

在created执行之后,判断vue实例对象是否有emplate参数选项:

       如果有则将其作为模板编译成render函数;
       如果没有template选项,则将外部HTML作为模板编译;
       但是如果vue实例对象存在自定义render函数,则以render函数中作为模板编译。

总结优先度为:render函数选项 > template选项 > outer HTML

这是在outer HTML中定义的模板

var vm = new Vue({ el: '#app', //在vue配置项template中定义模板(优先级第二) template: "

这是在template中定义的模板

", data: { message: 'Vue的生命周期' }, //在render中定义模板(优先级第一) render: function(createElement) { return createElement('h1', '这是在render函数中定义的模板') }})复制代码
See the Pen by madman0621 ( ) on .

转载于:https://juejin.im/post/5c95e322f265da60fd0c1823

你可能感兴趣的文章
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>