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如何循环提取对象数组中的值
Nov 18 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
基于vuex实现购物车功能
Jan 10 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
关于Vue Router的10条高级技巧总结
May 06 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
vue自定义右键菜单之全局实现
Apr 09 Vue.js
Vue操作Storage本地化存储
Apr 29 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 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获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
javascript 跳转代码集合
2009/12/03 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
python怎么提高计算速度
2020/06/11 Python
python如何随机生成高强度密码
2020/08/19 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
精彩的推荐信范文
2013/11/26 职场文书
求职意向书
2014/04/01 职场文书
演讲稿格式范文
2014/05/19 职场文书
十岁生日答谢词
2015/01/05 职场文书
个人借条范本
2015/05/25 职场文书
勤俭节约主题班会
2015/08/13 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
golang 实现并发求和
2021/05/08 Golang
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
sql注入教程之类型以及提交注入
2021/08/02 MySQL
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript