vue生命周期钩子函数以及触发时机


Posted in Vue.js onApril 26, 2022

vue生命周期钩子函数

vue生命周期即为一个组件从出生到死亡的一个完整周期

主要包括以下4个阶段:创建,挂载,更新,销毁

  • 创建前:beforeCreate, 创建后:created
  • 挂载前:beforeMount, 挂载后:mounted
  • 更新前:beforeUpdate, 更新后:updated
  • 销毁前:beforeDestroy, 销毁后:destroyed

我平时用的比较多的钩了是created和mounted,created用于获取后台数据,mounted用于dom挂载完后做一些dom操作,以及初始化插件等.beforeDestroy用户清除定时器以及解绑事件等,

另外还新增了使用内置组件 keep-alive 来缓存实例,而不是频繁创建和销毁(开销大)

  • actived 实例激活
  • deactived 实例失效

以下为详解版

大家理解就ok:

生命周期钩子函数(11个)Function(类型),标注蓝色的那个是属于类型的意思。

  • beforeCreate Function 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
  • created Function 在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer), 属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
  • beforeMount Function 在挂载开始之前被调用:相关的 render 函数首次被调用。
  • mounted Function el 被新创建的 vm.el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
  • beforeUpdate Function 数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。该钩子在服务器端渲染期间不被调用,因为只有初次渲染会在服务端进行。
  • updated Function 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
  • activated Function keep-alive 组件激活时调用。该钩子在服务器端渲染期间不被调用。
  • deactivated Function keep-alive 组件停用时调用。该钩子在服务器端渲染期间不被调用。
  • beforeDestroy Function 实例销毁之前调用。在这一步,实例仍然完全可用。该钩子在服务器端渲染期间不被调用。
  • destroyed Function Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。
  • errorCaptured(2.5.0+ 新增) (err: Error, vm: Component, info: string) => ?boolean 当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播。

生命周期mounted和activated使用、踩坑 

activated

说到activated不得不提到keep-alive,你切换出去又切出来会调用到它。(你可以理解为生命周期钩子函数,用法也一样)

mounted

指的是实例被挂载后调用,如果没有keep-alive每次切回来该组件都会触发一次,但是keep-alive会缓存不活动的组件实例,那么可以说他只会触发一次。所以往往一些数据的请求要在这写一次请求,在activated里写一次请求,保证你浪荡回来还能请求到新的数据。

踩坑

1.这里有个关键词是实例,也就是说如果你用了$refs,你就得注意了。

2.mounted先执行,首次进入时候两个一起执行

vue生命周期钩子函数以及触发时机

附言

keep-alive的运用非常非常非常多。

vue生命周期钩子函数以及触发时机

Vue.js 相关文章推荐
vue在图片上传的时候压缩图片
Nov 18 Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
在vue项目中封装echarts的步骤
Dec 25 Vue.js
基于vue的video播放器的实现示例
Feb 19 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue首次渲染全过程
Apr 21 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
vue+springboot实现登录验证码
May 27 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
vue递归实现树形组件
Jul 15 Vue.js
vue里使用create, mounted调用方法
vue elementUI批量上传文件
Apr 26 #Vue.js
vue.js 使用原生js实现轮播图
Apr 26 #Vue.js
如何vue使用el-table遍历循环表头和表体数据
vue 把二维或多维数组转一维数组
Apr 24 #Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 #Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
You might like
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
经典c++面试题五
2014/12/17 面试题
const和static readonly区别
2013/05/20 面试题
护士辞职信模板
2014/01/20 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
工程承包协议书
2014/04/22 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
山楂树之恋观后感
2015/06/11 职场文书
2015元旦感言
2015/12/09 职场文书
Python 图片添加美颜效果
2022/04/28 Python
python神经网络Xception模型
2022/05/06 Python
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang