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 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
浅析VUE防抖与节流
Nov 24 Vue.js
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue实现登录功能
Dec 31 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue 实现上传组件
May 31 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 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
德生PL660的电路分析和打磨
2021/03/02 无线电
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
JavaScript使用cookie
2007/02/02 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
jqTransform美化表单
2015/10/10 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
Vue基础配置讲解
2019/11/29 Javascript
全面分析Python的优点和缺点
2018/02/07 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
运动会通讯稿400字
2014/01/28 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
升职感谢信
2015/01/22 职场文书
会议邀请函
2015/01/30 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android