冇事来学系--Vue2.0中讲讲生命周期吧

简介: 生命周期(Life Cycle)是指一个组件从创建->运行->销毁的整个阶段,强调的是一个时间段。生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行 。是vue在关键时刻帮我们调用的一些特殊名字的函数。生命周期函数中的this指向的是vm或组件实例对象

生命周期(Life Cycle)


是指一个组件从创建->运行->销毁的整个阶段,强调的是一个时间段。

生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行 。是vue在关键时刻帮我们调用的一些特殊名字的函数。

生命周期函数中的this指向的是vm或组件实例对象


组件创建阶段new Vue( )



beforeCreate --> created --> beforeMount --> mounted

  • beforeCreate( ) 此时组件的props/data/methods尚未被创建,都处于不可用状态(无法通过vm访问到data中的数据、methods中的方法)
  • create( ) 组件的props/data/methods已创建好,都处于可用的状态。但是组件的模板结构还未生成(不能操作DOM)!!!

create函数非常重要,通常是在create( )里面发Ajax请求(使用methods里 面的方法来请求服务器数据,并且将数据转存到data中,供template模板渲染时使用


  • beforeMount( ) 将要把内存中编译好的HTML结构 (虚拟DOM) 渲染到浏览器中(转换为真实DOM),此时浏览器中还没有当前组件的DOM结构 (此时页面中的DOM是未经vue编译的DOM)

在这个函数中操作DOM,随后就被 虚拟DOM转化的真实DOM插入页面时所覆盖,所以操作都会失效

  • mounted( ) 重要! 此时已经把内存中编译好的HTML结构渲染到浏览器之中,此时浏览器中包含了当前组件的DOM结构 (最早可以在mounted函数里对当前组件的DOM元素进行操作 )

Vue完成了模板的解析并把初始的真实DOM元素放入页面之后(完成挂载)调用mounted( )

在虚拟DOM转化为真实DOM时,vue将虚拟DOM保存到vm.el中,为后续数据更新时,新的虚拟DOM和旧的虚拟DOM作比较时,若有的元素或者节点可以复用,则vue直接在vm.el中,为后续数据更新时,新的虚拟DOM和旧的虚拟DOM作比较时,若有的元素或者节点可以复用,则vue直接在vm.elDOMDOMvuevm.el中获取到相应节点

至此,初始化过程结束了,一般在此进行:开启定时器,发送网络请求,订阅消息,绑定自定义事件等初始化操作。即一上来就要做的事情就要写在这个函数里面


组件运行阶段


beforeUpdate --> updated

  • beforeUpdate( ) 当data节点里面的数据发生变化的时候才会触发这个函数。此时data数据更新但组件的模板结构还没有重新渲染 (页面尚未和数据保持同步)
  • updated( ) 此时data更新完数据,组件的DOM结构也重新渲染完成

当数据发生变化之后,为了能操作最新的DOM结构,必须把DOM操作的代码写到updated( )生命周期函数中

注意:这个阶段的两个函数执行的次数最少为0次(data数据没有变化),最多为无数次

组件销毁阶段


beforeDestroy --> destroyed

调用vm.$destroy( )完全销毁一个实例,清理它与其它实例的连接,解绑它的全部指令以及自定义事件,但原生的DOM事件仍然有效。并且会触发beforeDestroy和destroyed的钩子

  • beforeDestroy( )重要! 此时vm中所有的data、methods、指令等都处于可用状态,马上要执行销毁过程。但是此时所有对数据的修改不会再触发beforeUpdate( )和updated( )了! 。一般在此函数内 关闭定时器、取消订阅消息、解绑自定义事件等收尾操作

webpack打包编译main.js,整个项目都是从main.js开始的,webpack发现了App.vue,进而发现App.vue里面嵌套的其他组件,整个打包完以后,webpack会生成两个js文件并且放到index.html里面


注意:在写周期函数的时候,要写到与methods节点同等级的位置

生命周期小总结

网络异常,图片无法展示
|

网络异常,图片无法展示
|

目录
相关文章
|
2月前
|
JavaScript
vue实例的data属性,可以在哪些生命周期中获取到
Vue实例的`data`属性在`beforeCreate`、`created`和`beforeMount`阶段已可访问。此时,虽能使用数据,但事件监听和DOM操作不可行。`beforeCreate`时数据可访问,但未初始化观测和事件;`created`时数据完全可用,但未挂载到DOM;`beforeMount`时仍可访问数据,DOM挂载未开始。
31 3
|
2月前
|
JavaScript API 开发者
vue3的生命周期
Vue3 保留了大部分 Vue2 的生命周期钩子,`同时引入了 Composition API`,为开发者提供了更灵活的逻辑复用和组织方式。以下是 Vue3 中组件生命周期的详细介绍
|
2月前
|
JavaScript
在vue中,在哪个生命周期内调用异步请求?
在vue中,在哪个生命周期内调用异步请求?
36 0
|
2月前
|
JavaScript
在vue中,Vue 的父组件和子组件生命周期钩子函数执行顺序?
在vue中,Vue 的父组件和子组件生命周期钩子函数执行顺序?
18 0
|
2月前
|
JavaScript
在vue中,谈谈你对 Vue 生命周期的理解?
在vue中,谈谈你对 Vue 生命周期的理解?
18 0
|
1天前
|
JavaScript
深入理解Vue生命周期钩子及其应用
深入理解Vue生命周期钩子及其应用
4 0
|
2天前
|
JavaScript 前端开发
深入理解Vue生命周期钩子及其应用
深入理解Vue生命周期钩子及其应用
6 0
|
14天前
|
JavaScript 前端开发 API
Vue生命周期:在虚拟世界的牵绊与自由
Vue生命周期:在虚拟世界的牵绊与自由
18 1
|
16天前
|
存储 JavaScript 前端开发
【Vue】绝了!这生命周期流程真...
【Vue】绝了!这生命周期流程真...
|
16天前
|
JavaScript
【vue】生命周期钩子函数的执行过程和父子组件钩子函数的执行顺序
【vue】生命周期钩子函数的执行过程和父子组件钩子函数的执行顺序
11 1

相关实验场景

更多