Vue组件生命周期运行原理解析


Posted in Vue.js onNovember 25, 2020

Vue实例有一个完整的生命周期,从开始创建、初始化数据、编译模板、挂在DOM、渲染-更新-渲染、卸载等一系列过程,我们成为Vue 实例的生命周期,钩子就是在某个阶段给你一个做某些处理的机会。

Vue组件生命周期运行原理解析

beforeCreate( 创建前 )

在实例初始化之后,数据观测和事件配置之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因此无法访问methods, data, computed等上的方法和数据。

created ( 创建后 )

实例已经创建完成之后被调用,在这一步,实例已完成以下配置:数据观测、属性和方法的运算,watch/event事件回调,完成了data 数据的初始化,el没有。 然而,挂在阶段还没有开始, $el属性目前不可见,这是一个常用的生命周期,因为你可以调用methods中的方法,改变data中的数据,并且修改可以通过vue的响应式绑定体现在页面上,,获取computed中的计算属性等等,通常我们可以在这里对实例进行预处理,也有一些童鞋喜欢在这里发ajax请求,值得注意的是,这个周期中是没有什么方法来对实例化过程进行拦截的,因此假如有某些数据必须获取才允许进入页面的话,并不适合在这个方法发请求,建议在组件路由钩子beforeRouteEnter中完成。

beforeMount

挂在开始之前被调用,相关的render函数首次被调用(虚拟DOM),实例已完成以下的配置: 编译模板,把data里面的数据和模板生成html,完成了el和data 初始化,注意此时还没有挂在html到页面上。

mounted

挂在完成,也就是模板中的HTML渲染到HTML页面中,此时一般可以做一些ajax操作,mounted只会执行一次。

beforeUpdate

在数据更新之前被调用,发生在虚拟DOM重新渲染和打补丁之前,可以在该钩子中进一步地更改状态,不会触发附加地重渲染过程

updated(更新后)

在由于数据更改导致地虚拟DOM重新渲染和打补丁只会调用,调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作,然后在大多是情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环,该钩子在服务器端渲染期间不被调用

beforeDestroy(销毁前)

在实例销毁之前调用,实例仍然完全可用,

这一步还可以用this来获取实例,

一般在这一步做一些重置的操作,比如清除掉组件中的定时器 和 监听的dom事件

destroyed(销毁后)

在实例销毁之后调用,调用后,所以的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
vue+element实现动态加载表单
Dec 13 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
浅谈Vue的computed计算属性
Mar 21 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
vue2的 router在使用过程中遇到的一些问题
Apr 13 Vue.js
vue 给数组添加新对象并赋值
Apr 20 Vue.js
Vue操作Storage本地化存储
Apr 29 Vue.js
vue router 动态路由清除方式
May 25 Vue.js
vue element-ul实现展开和收起功能的实例代码
Nov 25 #Vue.js
在Vue中使用mockjs代码实例
Nov 25 #Vue.js
Vue3配置axios跨域实现过程解析
Nov 25 #Vue.js
Vue使用Element实现增删改查+打包的步骤
Nov 25 #Vue.js
vue + el-form 实现的多层循环表单验证
Nov 25 #Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 #Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 #Vue.js
You might like
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
PHP处理会话函数大总结
2015/08/05 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
无阻塞加载脚本分析[全]
2011/01/20 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python随机生成彩票号码的方法
2015/03/05 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
用python制作游戏外挂
2018/01/04 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
Python数据可视化之画图
2019/01/15 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
幼儿园植树节活动总结
2014/07/04 职场文书
校庆团日活动总结
2014/08/28 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis