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的mixin策略
Nov 19 Vue.js
vue单元格多列合并的实现
Nov 26 Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
vue实现图书管理系统
Dec 29 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
详解Vue router路由
Nov 20 Vue.js
Vue2.0搭建脚手架
Mar 13 Vue.js
使用vuex-persistedstate本地存储vuex
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
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python生成器表达式和列表解析
2016/03/10 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
Python与R语言的简要对比
2017/11/14 Python
pyshp创建shp点文件的方法
2018/12/31 Python
python pandas时序处理相关功能详解
2019/07/03 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
Django models文件模型变更错误解决
2020/05/11 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
销售文员的岗位职责
2013/11/20 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
团日活动总结怎么写
2014/06/25 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python