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 相关文章推荐
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
Vue-router中hash模式与history模式的区别详解
Dec 15 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
详细聊聊vue中组件的props属性
Nov 02 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 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中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
jquery text()要注意啦
2009/10/30 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
js 走马灯简单实例
2013/11/21 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
教师简历自我评价
2014/02/03 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
外联部演讲稿
2014/05/24 职场文书
球队口号
2014/06/18 职场文书
拾金不昧表扬信
2015/01/16 职场文书
小学教师党员承诺书
2015/04/27 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
利用python做表格数据处理
2021/04/13 Python
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server