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的mixin策略
Nov 19 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
vue脚手架项目创建步骤详解
Mar 02 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue elementUI表格控制对应列
Apr 13 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 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正则验证Email的方法
2015/06/15 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
python剪切视频与合并视频的实现
2020/03/03 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
介绍一下gcc特性
2015/10/31 面试题
《少年王冕》教学反思
2014/04/11 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
高中运动会广播稿
2014/09/16 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis