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实现表格合并功能
Dec 01 Vue.js
vue $router和$route的区别详解
Dec 02 Vue.js
在vue中使用inheritAttrs实现组件的扩展性介绍
Dec 07 Vue.js
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue 自定义组件添加原生事件
Apr 21 Vue.js
vue修饰符.capture和.self的区别
Apr 22 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 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,ajax实现分页
2008/03/27 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
重载toString实现JS HashMap分析
2011/03/13 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
JavaScript中Function详解
2015/02/27 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
浅谈用VSCode写python的正确姿势
2017/12/16 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
python在地图上画比例的实例详解
2020/11/13 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
机械专业应届生求职信
2013/09/21 职场文书
仓库组长岗位职责
2014/01/29 职场文书
小学新教师培训方案
2014/02/03 职场文书
安全大检查实施方案
2014/02/22 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
计划生育汇报材料
2014/12/26 职场文书
裁员通知
2015/04/25 职场文书
校运会通讯稿
2015/07/18 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python