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 相关文章推荐
springboot+vue实现文件上传下载
Nov 17 Vue.js
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
Vue3 实现双盒子定位Overlay的示例
Dec 22 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 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
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
python pytest进阶之fixture详解
2019/06/27 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
老师自我鉴定范文
2013/12/25 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
正科级干部考察材料
2014/05/29 职场文书
运动会稿件100字
2014/09/24 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
本溪水洞导游词
2015/02/11 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
Python可视化学习之seaborn调色盘
2022/02/24 Python