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 17 Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
vue动态绑定style样式
Apr 20 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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
租赁协议书范本
2014/04/22 职场文书
师德师风自我评价范文
2014/09/11 职场文书
员工辞职信范文
2015/03/02 职场文书
会议主持人开场白台词
2015/05/28 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
单位病假条范文
2015/08/17 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript
Python+Tkinter打造签名设计工具
2022/04/01 Python