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自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
vue实现广告栏上下滚动效果
Nov 26 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
vue实现简单数据双向绑定
Apr 28 Vue.js
详解Vue的sync修饰符
May 15 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
Vue+Flask实现图片传输功能
Apr 01 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 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
收音机的保养
2021/03/01 无线电
如何过滤高亮显示非法字符
2006/10/09 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
python实用代码片段收集贴
2015/06/03 Python
Python使用爬虫猜密码
2016/02/19 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
Python是如何进行类型转换的
2013/06/09 面试题
保护环境演讲稿
2014/05/10 职场文书
优秀班组事迹材料
2014/12/24 职场文书
社区党建工作总结2015
2015/05/13 职场文书
复活读书笔记
2015/06/29 职场文书
golang中字符串MD5生成方式总结
2021/07/04 Golang