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中使用mockjs代码实例
Nov 25 Vue.js
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
VUE中的v-if与v-show区别介绍
Mar 13 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_SELF的安全问题
2009/09/05 PHP
PHP函数常用用法小结
2010/02/08 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
php集成开发环境详解
2019/09/24 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
python中if及if-else如何使用
2020/06/02 Python
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
入团者的自我评价分享
2013/12/02 职场文书
计算机实训报告范文
2014/11/05 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏