
VUE框架基础--------生命周期理解
发布日期:2021-05-15 00:08:54
浏览次数:24
分类:精选文章
本文共 1699 字,大约阅读时间需要 5 分钟。
文章目录
vue的生命周期
1. 生命周期
- Vue实例从创建到销毁的过程,就是生命周期
- 创建、初始化数据、编译模板、挂载DOM、渲染、更新、渲染、销毁等一系列过程
2. 周期阶段
Vue生命周期可以简单分为四个阶段:
- 创建阶段----> beforeCreate,created
- 挂载阶段----> beforeMount,mounted
- 运行阶段----> beforeUpdate,updated
- 销毁阶段----> beforeDestroy,destroyed
3. 生命周期详解
1. 创建阶段
1. beforeCreate
- beforeCreate是new Vue之后触发的第一个钩子函数,此时data、methods、computed、以及watch上的数据和方法还未初始化,都不能被访问
- 在初始化实例之后,数据观测和event\watcher事件配置之前被调用
2. created
- 数据据观测、property和方法的运算,watch、event事件回调
- data和methods初始化完成,异步请求适合在此钩子函数中调用
- 此时无法与Dom交互,如果必须则用this.$nextTick来访问
2. 挂载阶段
1. beforeMount
- template模板已经导入render函数编译,但未进行渲染
2. mounted
- DOM已经完成挂在,双向数据绑定,可以$refs属性对DOM进行操作
- 如果希望整个视图渲染完毕
mounted: function() { this.$nextTick(function(){ })}
3. 运行阶段
1. beforeUpdate
- beforeUpdate发生在响应式数据更新之前,虚拟DOM重新渲染之前被触发,
- 你可以在当前阶段进行更改数据,不会造成重新渲染,但会再次触发当前钩子函数
2. updated
- 此时DOM已经更新,现在可以执行依赖于DOM的操作
- 如果要相应状态改变,最好使用计算属性或 watcher 取而代之。最好不要在此期间更改数据,因为这可能会导致无限循环的更新。
- 如果你希望等到整个视图都重绘完毕,可以在 updated 里使用 vm.$nextTick。
updated: function () { this.$nextTick(function () { // 代码将在整个视图重新渲染后执行 })}
4. 摧毁阶段
1. beforeDestroy
- 实例销毁之前,在这期间实例完全可以被使用
- 在这时进行清楚定时器的操作
2. destroyed
- 实例被销毁、实例也被销毁、事件监听器被移除
生命周期钩子函数 | 实例处于阶段描述 | 能否获取到el (this.$el) | 能否获取到data (this.xxx) | 能否使用methods中的方法 (this.xxx()) |
---|---|---|---|---|
beforeCreate | 创建前 | 实例已初始化,但数据观测, | watch/event 事件回调还未配置 | 获取不到 |
created | 创建后 | 已完成如下配置,数据观测 (data observer),property 和方法的运算,watch/event 事件回调 | 获取不到 | 能 |
beforeMount | 挂载前 | dom已初始化,但并未挂载和渲染 | 能 | 能 |
mounted | 挂载后 | dom已完成挂载和渲染 能 | 能 | 能 |
beforeUpdate | 更新前 | 数据已改变,但dom为更新 能 | 能 | 能 |
updated | 更新后 | dom已更新 | 能 | 能 |
beforeDestroy | 销毁前 | 实例销毁前,实例仍然可用 | 能 | 能 |
destroyed | 销毁后 | 实例已销毁,所有指令被解绑,事件监听器被移除,子实例都被销毁 | 能 | 能 |
4. 周期Demo
{ { message }}
发表评论
最新留言
很好
[***.229.124.182]2025年04月27日 01时21分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Explore Optimization
2019-03-07
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
2019-03-07
2020Java程序设计基础(华东交通大学)章节测试免费满分答案
2019-03-07
解决数据库报ORA-02289:序列不存在错误
2019-03-07
map[]和map.at()取值之间的区别
2019-03-08
成功解决升级virtualenv报错问题
2019-03-08
【SQLI-Lab】靶场搭建
2019-03-08
【Bootstrap5】精细学习记录
2019-03-08
LeetCode197.打家劫舍
2019-03-08
A simple problem HDU-2522 【数学技巧】
2019-03-08
Struts2-从值栈获取list集合数据(三种方式)
2019-03-08
vscode中快速生成vue模板
2019-03-08
参考图像
2019-03-09
设计模式(18)——中介者模式
2019-03-09
用JavaScript实现希尔排序
2019-03-09
推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
2019-03-09