Vue生命周期

摘要:
昨天,我们简要介绍了什么是生命周期,以及生命周期的几个阶段。今天,我们将具体介绍生命周期的每个阶段是为了什么!BeforeCreate:当前生命周期函数主要用于初始化。它可以创建加载。Destoryed:1.断开DOM和数据之间的关联第一次创建组件时,它将执行beforeCreate、created、beforeMount和Mounted。

  昨天简单介绍了一下生命周期是什么,以及生命周期的几个阶段,今天具体介绍一下生命周期各个阶段都是干什么的叭!

  beforeCreate(创建前):

   当前生命周期函数主要做初始化工作,可以创建一个loading。

  Created(创建后*****):

     1.当前生命周期函数中我们可以访问到vm身上所有的属性和方法

   2.当前生命周期函数会将data中所有属性和方法都挂载到vm的实例身上

   3.当前生命周期会给所有data对象里的属性添加getter/setter方法,因此如果需要进行前后端数据交互时必在当前生命周期中进行(响应式原理),如果数据没有提前在data中进行绑定,这个属性身上不会有getter/setter方法,这个数据也无法动态得进行改变

  beforeMount(挂载前):

   1.在这个生命周期中,数据和模板还没有进行相结合

   2.在这个生命周期中可以对数据进行最后的修改(第一次显示在浏览器中的数据,update之前的数据)

   3.当前生命周期中获取不到真实的DOM结构

  Mounted(挂在后):

   1.在这个生命周期中数据和模板已经结合,可以通过this.$refs获取到真正的DOM结构($refs:ref="值必须在DOM中唯一",ref是给DOM元素添加的属性)

    补充:ref和document的区别:document从整个页面找DOM元素(已插入到页面),ref是从当前vue的虚拟DOM中找到的当前元素(虚拟DOM参见https://www.cnblogs.com/gaosong-shuhong/p/9253959.html),是从内存中找到的DOM结构(虚拟DOM是真实的JS对象,可放在内存中,访问内存的速度比访问页面元素快得多)

   2.在这个生命周期中可以做一些new操作

  beforeUpdate(更新前):

   1.当data中的数据发生改变时才会执行这个周期中的函数

   2.可以对数据进行最后的修改(更新后的数据)

   3.可以访问到真实的DOM结构

   4.当前生命周期中的数据和模板还没有更新完毕

  Updated(更新后):

   1.可以访问到数据更新后最新的DOM结构

   2.当前生命周期函数会被频繁触发,因此在当前周期做事件绑定或实例化时,要提前做判断,否则会导致内存泄露.

  beforeDestory(销毁前*):

   在这个生命周期函数中可以访问真实DOM结构和data中的数据,一般在这个声明周期函数中做解绑/移除操作。

  Destoryed(销毁后):

   1.将DOM与数据间的关联进行断开

   2.在当前生命周期函数中访问不到真实的DOM结构    

  以上生命周期函数中,多次执行的有:beforeUpdate,Updated.

  组件第一次创建的时候会执行beforeCreate,Created,beforeMount,Mounted。

  本文介绍了生命周期各个阶段都是干嘛的,接下来再撸一篇文章详细介绍每个阶段的代码,并对每个阶段进行解剖式分析,波波(●´З`●)

  

免责声明:文章转载自《Vue生命周期》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇usb驱动之打印usb设备信息(一)一文详解ORB-SLAM3中的地图管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue中修改滚动条样式

这是一个在VUE中的设置滚动条样式的方法,该方法只适用于Chrome浏览器,亲测在火狐不适用 样式写在 APP.vue 中,可以用在全局,如果只用在那个盒子中,只需要在::前面加上盒子的class名就可以 ::-webkit-scrollbar { 10px; height: 1px; } ::-webkit-scrollbar-thumb {...

基于vue-cli3的vue项目移动端样式适配,lib-flexible和postcss-px2rem

1,安装 flexible和 postcss-px2rem(命令行安装) npm install lib-flexible --save npm install postcss-px2rem --save 简要介绍这两个包的用途: flexible会为页面根据屏幕自动添加<meta name='viewport' >标签,动态控制initia...

vue_相同组件,不同url跳转不重新渲染的解决方法

最近写的这个项目,有很多下拉菜单,每个菜单会有相应的两种类型。现在产品的需求是,跳转到不同的类型 需要页面重新渲染数据 那么问题来了。 我试了好几种方法,用watch监听路由去判断,但是发现输在input里面的值是不会被替换掉的 所以想到了用key 去如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。使用...

Vue的编译过程

碰到是否有template选项时,会询问是否要对template进行编译: 在template编译(渲染成UI)有一个过程。模板通过编译生成AST,再由AST生成Vue的渲染函数,渲染函数结合数据生成Virtual DOM树,对Virtual DOM进行diff和patch后生成新的UI。将上图细化一下,也就是template编译的过程如下图所示:...

jquery源码 DOM加载

jQuery版本:2.0.3 DOM加载有关的扩展 isReady:DOM是否加载完(内部使用)  readyWait:等待多少文件的计数器(内部使用) holdReady():推迟DOM触发 ready():准备DOM触发。 jQuery.ready.promise=function(){};  监听DOM的异步操作(内部使用) 一、$(functi...

vue elementui rules根据条件判断下一个选项必填和非必填的校验

<el-form-item label="HyperLink" prop="target" :rules="formInfo.type === 1?formRule.target:[{ required: false}]"> <el-input v-model="formInfo.target" clearable siz...