vue生命周期详解简书,vue生命周期详解

  vue生命周期详解简书,vue生命周期详解

  我看到很多人讲vue的生命周期,但总是一头雾水,尤其是自考的学生。可能js基础不太强,听起来要求比较高。那我就给大家一点拙见,用白话整理一下。如有不准确之处请指正!

  

什么是生命周期?

  生命周期,依我拙见,就是一个从生到死的过程!

  类比自己的一生,其实可以简单粗暴地把生命周期当成自己的一生。一个人一出生就开始了一段美好(艰难)的旅程,人生的每个成长阶段都会对应每个阶段应该做的事情,比如上幼儿园、小学、中学、高中、大学、工作(比如我在努力)、结婚等等。直到一百年后,尘归尘,土归土。

  Vue也有这样的生命周期,它会在执行的每个阶段做一些事情。不同的是,vue是通过各个对应阶段的生命周期函数来做的。现在vue官网对生命周期的描述就好理解多了!

  vue官网的描述:

  每个Vue实例在创建时都要经历一系列的初始化过程——。例如,有必要设置数据监控、编译模板、将实例安装到DOM并在数据发生变化时更新DOM。同时,在这个过程中会运行一些被称为生命周期钩子的函数,这给了用户在不同阶段添加自己代码的机会。

  简单地说,在创建Vue实例到最终消亡的过程中,会执行一系列方法来对应Vue的当前状态。这些方法叫做:生命周期挂钩!

  看我给你找的一张图,你可以保存下来,等进一步研究使用,再看这张图:

  根据上图,vue的生命周期中有八个钩子函数,描述了一个vue的寿命。让我们详细看看这八个生命周期函数,以便更好地了解Vue的生命周期!

  

vue的8个生命周期函数

  用上图看。

  1.beforeCreate:实例初始化后,调用数据观察器和事件/观察器事件配置。

  2.created:在实例创建后立即调用它。这一步,实例完成了以下配置:数据观察者,属性和方法的操作,watch/event事件的回调;但是,挂载阶段还没有开始,$el属性目前是不可见的。

  3.beforeMount:在挂载开始前调用,第一次调用相关的render函数。

  4.挂载:El被新创建的vm替换。$el,钩子在装入实例后被调用。

  如果根实例挂载了一个文档内元素,那么vm。调用mounted时$el也在文档中(PS:注意mounted并不保证所有子组件都会一起挂载。

  如果您想等到整个视图呈现出来,可以用vm替换Mounted:$nextTick。VM。$ Next Tick会在后面的空间详细解释。在这里,大家需要知道有这个东西。

  5.beforeUpdate:当数据更新时调用,这发生在虚拟DOM被修补之前。适合在更新之前访问现有的DOM,比如手动删除添加的事件侦听器。

  6.updated:虚拟DOM由于数据变化重新渲染打补丁,之后会调用钩子。当这个钩子被调用时,组件DOM已经被更新,所以现在可以执行依赖于DOM的操作了。但是,在大多数情况下,您应该避免在此期间更改状态。如果状态发生了相应的变化,通常最好用计算属性或者watcher来代替(PS:计算属性和watcher后面会介绍)。

  7.beforeDestroy:在实例销毁之前调用。在这一步中,实例仍然完全可用。

  8.销毁:在Vue的实例被销毁后调用。调用后,Vue实例指示的所有内容都将被解除绑定,所有事件侦听器都将被移除,所有子实例都将被销毁。

  

代码验证:

  在下面的例子中,我故意把生命周期钩子函数的顺序弄乱了,并进行编号,但它仍然会按照执行顺序自动输出,所以你可以验证上图中的过程。也可以手动试试!

  div id=应用程序

  Button @click=clickCounter()单击/按钮

  p{{ count }}/p

  /div

  脚本类型=文本/javascript

  var app=新Vue({

  埃尔: #app ,

  数据:{

  计数:1

  },

  方法:{

  clickCounter(){

  this.count=1

  }

  },

  已创建:函数(){

  Console.log(2。实例已创建’)

  },

  创建之前:函数(){

  Console.log(1。实例初始化’)

  },

  已安装:函数(){

  Console.log(4。装载到实例’)

  },

  beforeMount:函数(){

  Console.log(3。装载开始前’)

  },

  更新前:()={

  Console.log(“更新数据时调用”)

  },

  已更新:函数(){

  Console.log(更新数据并重新呈现DOM )

  },

  销毁前:函数(){

  Console.log(在实例销毁前调用)

  },

  已销毁:函数(){

  Console.log(在实例销毁后调用)

  }

  })

  /*单击页面销毁vue对象,之后实例将被释放*/

  //销毁后,再点击就不行了。

  document.onclick=function(){

  app。$ destroy();

  };

  /脚本

  注意:最后,我手工销毁了这个实例。点了之后我执行了一次,以后再点就不行了。测试的时候我先把被破坏的代码end注释掉,然后让它去测试!

  

3个关于vue组件的生命周期钩子

  Activated:激活保活组件时调用(PS:与组件相关,讲解组件时会介绍关于保活)。

  停用:keep-alive组件停用时的keep-alive(PS:与组件相关,讲解组件时会介绍关于keep-alive)。

  ErrorCaptured:在从子代组件捕获错误时调用,该钩子将接收三个参数:错误对象、发生错误的组件实例和包含错误源信息的字符串。这个钩子可以返回false来防止错误向上传播。

  

写在最后

  生命周期这个知识点,在这一块,我们只需要知道一些东西,对它的大概用法有个基本的掌握,等待深入的学习和理解。回头看一篇的内容,结合Vue的源代码,会收获很多!

  以上是对vue中生命周期细节的梳理。更多关于vue生命周期的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: