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 19 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
详解Vue的七种传值方式
Feb 08 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 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数据库连接类~~做成一个分页类!
2006/11/25 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
浅析Python基础-流程控制
2016/03/18 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
python3中zip()函数使用详解
2018/06/29 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
社区志愿者心得体会
2014/01/03 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
最常使用的求职信
2014/05/25 职场文书
欢迎横幅标语
2014/06/17 职场文书
博士生求职信
2014/07/06 职场文书
社区文艺活动方案
2014/08/19 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
教师求职简历自我评价
2015/03/10 职场文书
经费申请报告范文
2015/05/18 职场文书