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
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
vue实现在data里引入相对路径
Jun 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
PHP静态新闻列表自动生成代码
2007/06/14 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
php简单判断文本编码的方法
2015/07/30 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
Python3匿名函数用法示例
2018/07/25 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
python 字段拆分详解
2019/12/17 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
Java程序员面试90题
2013/10/19 面试题
自动化专业毕业生自荐信
2013/11/01 职场文书
优良学风班申请材料
2014/02/13 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
产品销售计划书
2014/05/04 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
街道社区活动报告
2015/02/05 职场文书
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis