vue学习(十九) 生命周期 了解
生命周期:从vue实例创建、运行、到销毁期间,总是伴随着各种各样的事件,这些事件统称为生命周期
生命周期钩子:就是生命周期事件的别名而已
生命周期钩子==生命周期函数==生命周期事件
生命周期函数分类:
- 创建型的生命周期函数:
beforeCreate:实例刚在内存中被创建的出来,此时还没有初始化好data和methods属性
created:实例已经在内存中创建好并且data和methods已经创建好,但是模板template还未编译
beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中
mounted:此时,已经将编译好的模板,挂载到了页面指定的容器中显示
- 运行期间的生命周期函数:
beforeUpdate:状态更新之前执行此函数,此时data中的状态值是最新的,但是界面上现实的数据还是旧的,因为此时还没有开始重新渲染DOM节点
updated:实例更新完毕之后调用此函数,此时data中的状态值和界面上显示的数据都已经完成了更新,界面已经被重新渲染好了
- 销毁期间的生命周期函数:
beforeDestroy:实例销毁之前调用,在这一步,实例依然完全可用
destroyed:vue实例销毁后调用,调用后,vue实例指示的所有东西都会解除绑定,所有的事件监听器会被移除,所有的子实例也会被销毁
生命周期过程中的函数在测试验证的时候,最好一个一个从上到下来进行,不要全部执行,为了看的清楚
<div id="app">
<h3 id="h3">{{msg}}</h3>
<input type="button" value="修改msg" @click="msg='No'" />
</div>
<script>
var vm= new Vue({
el: "#app",
data: {
msg: "ok"
},
methods: {
show(){
console.log("执行show方法")
}
}, beforeCreate(){//这是遇到的第一个生命周期函数,表示实例完全被创建出来之前,会执行它
//console.log(this.msg) //控制台输出 undefined 说明data 未被初始化
//this.show();//控制台异常 Error in beforeCreated hook:"TypeError:this.show is not a function" 说明methods未被初始化
//注意:在beforeCreated生命周期函数执行的时候,data和methods中的数据都没有被初始化
}, created: {//这是遇到的第二个生命周期函数
//console.log(this.msg) //控制台输出 ok 说明data 已经被初始化
//this.show();//控制台 打印 执行show方法 说明 methods已经被初始化
//结论 在created生命周期函数中,data和methods都已经被初始化好了
//如果要调用methods中的方法,或者操作data中的数据,最早只能在created中操作
},
beforeMount(){//这是遇到的第三个生命周期函数,表示模板已经在内存中被编译完成了,但尚未把模板渲染到页面
//console.log(document.getElementById('h3').innerText) //控制台打印 {{msg}} 而不是 ok 说明模板未被渲染到页面
//在beforeMount执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串
},
mounted(){//这四遇到的第四个生命周期函数,表示内存中的模板已经真实挂载到了页面中,用户已经可以看到渲染好的页面了
//console.log(document.getElementById('h3').innerText) //控制台打印 ok 说明模板被挂载到真实页面
//注意:mounted是实例创建期间最后一个生命周期函数,当执行完mounted就表示,实例已经被完全创建好了
},
//接下来是运行中的两个事件
beforeUpdate(){//这时候,表示我们的界面还没有被更新,但是数据已经被更新了
//console.log('界面上的元素内容:'+ document.getElementById('h3').innerText) //控制台打印 界面上的元素内容:ok
//console.log('data中的msg数据是:'+ this.msg) //控制台打印 data中的msg数据是:No //得出结论:当执行beforeUpdate的时候,页面中显示的数据还是旧的,此时data中的数据是最新的,页面尚未和最新的数据保持同步
},
updated(){
//console.log('界面上的元素内容:'+ document.getElementById('h3').innerText) //控制台打印 界面上的元素内容:No
//console.log('data中的msg数据是:'+ this.msg) //控制台打印 data中的msg数据是:No
//updated事件执行的时候,页面和data数据已经保持同步了,都是最新的
},
})
</script>

vue学习(十九) 生命周期 了解的更多相关文章
- Vue(十)生命周期
Vue生命周期 vue实例从创建到销毁的过程,称为生命周期,共有八个阶段 <script> window.onload=function(){ let vm = new Vue({ el: ...
- VUE 学习笔记 二 生命周期
1.除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来 var data = { a: 1 } var vm = new Vue({ el: ' ...
- vue 学习一 组件生命周期
先上一张vue组件生命周期的流程图 以上就是一个组件完整的生命周期,而在组件处于每个阶段时又会提供一些周期钩子函数以便我们进行一些逻辑操作,而总体来讲 vue的组件共有8个生命周期钩子 beforeC ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期
回顾 哈喽大家好,前后端分离系列文章又开始了,今天周一,还是感谢大家花时间来观看我写的博客,周末呢,没有写文章,但是也没有闲着,主要是研究了下遗留问题,看过之前文章的应该知道,之前的在AOP使用Red ...
- Vue – 基础学习(1):对生命周期和钩子函的理解
一.简介 先贴一下官网对生命周期/钩子函数的说明(先贴为敬):所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和方法进行运算.这意味着你不能使用箭头函数来定义一个生命周 ...
- Vue2.5笔记:Vue的实例与生命周期
理解与认识 Vue 的实例是我们学习 Vue 非常重要的一步,也是非常必须的,因为实例是它的一个起点,也是它的一个入口,只有我们创建一个 Vue 实例之后,我们才行利用它进行一些列的操作. 首先 Vu ...
- vue 学前班003(生命周期)
ue把整个生命周期划分为创建.挂载.更新.销毁等阶段,每个阶段都会给一些“钩子”让我们来做一些我们想实现的动作.学习实例的生命周期,能帮助我们理解vue实例的运作机制,更好地合理利用各个钩子来完成我们 ...
- vue基本配置和生命周期
Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...
- 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)
一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 ...
随机推荐
- 用一杯茶时间搭建Gitea服务器
一.简单介绍 Gitea搭建局域网内的基于git的代码托管服务器,可以实现的功能包括:组织管理.团队管理.组织仓库设定.团队仓库分配.组织及团队权限分配管理.仓库添加PC协作者.仓库添加组织团队.分 ...
- 区间dp 能量项链 洛谷p1063
题目大意:如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为 (Mars单位),新产生的珠子的头标记为m,尾标记为n. 需要时,Mars人就用吸盘夹住 ...
- SpringBoot--防止重复提交(锁机制---本地锁、分布式锁)
防止重复提交,主要是使用锁的形式来处理,如果是单机部署,可以使用本地缓存锁(Guava)即可,如果是分布式部署,则需要使用分布式锁(可以使用zk分布式锁或者redis分布式锁),本文的分布式锁以red ...
- idea2020.1.2破解,亲测可行,激活至2089年!
一.下载最新版IDEA2020安装包 官网:https://www.jetbrains.com/idea/download/ 旧版:https://www.jetbrains.com/idea/dow ...
- day03组件
1.text 编写文本信息,等价于span 2.view 等价于div 3.image ============================wxml====================== ...
- 【XJOI】NOIP2020模拟训练题2 总结
得分情况: 估分: 30(T1)+100(T2)+0(T3)=130; 实际: 30(T1)+60(T2)+10(T3)=100; QAQ 是我高看自己了 T1 友好数对: 题意: 如果一个 ...
- day49 数据库终章
目录 一.pymysql补充 二.数据库补充 1 视图(了解) 2 触发器(了解) 3 事务 4 存储过程(了解) 5 函数 6 流程控制 7 索引 8 b+树 9 聚集索引(primary key) ...
- nginx限制访问域名,禁止IP访问
有些时候我们希望系统只能通过固定的域名访问,禁止IP或者恶意绑定的域名访问. 下面的nginx配置,假如host变量不是指定的域名,将返回403. server { listen 80; server ...
- java 面向对象(十一):关键字:package/import
1.1 使用说明: * 1.为了更好的实现项目中类的管理,提供包的概念 * 2.使用package声明类或接口所属的包,声明在源文件的首行 * 3.包,属于标识符,遵循标识符的命名规则.规范(xxxy ...
- 数据可视化之powerBI入门(三)财务人员必学,使用Powerquery是一种什么体验?
https://zhuanlan.zhihu.com/p/54700574 财务人员必学,使用Powerquery是一种什么体验? 你和Excel高手的距离只差了一个Power Query!!! 先思 ...