详解Vue生命周期,很详很白话

在这里插入图片描述
生命周期函数:指生命周期开始、运行、销毁所触发的函数;如beforeCreate、created、mounted……

  1. new Vue()

new 了一个Vue的实例对象,此时就会进入组件的创建过程。

  1. Init Events & Lifecycle

初始化组件的事件和生命周期函数,当执行这一步之后,组件的生命周期函数就已经全部初始化好了,等待着依次被调用;

  1. beforeCreate

组件创建之后遇到的第一个生命周期函数,这个阶段data 和methods以及dom结构都未被初始化,也就是获取不到data的值,不能调用methods中的函数

  1. Init injections & reactivity

这个阶段中,正在初始化data和methods中的方法

  1. created

这个阶段组件的data和methods中的方法已初始化结束,可以访问,但是dom结构未初始化,页面未渲染;
我们可以在这个阶段,经常会发起ajax请求

  1. 编译模板结构
new Vue({
  el: '#app',
  router,
  template: '<App/>',
  components: { App }
})

判断是否有el属性,若有el属性判断是否有template属性,若有template属性,则渲染template的模板,若没有template属性,则渲染el属性的模板;也就是el不指定,不渲染数据。
判断是否有el属性,若没有,则等待执行vm.$mount(‘el模板’) 这行代码
当以上步骤(编译模板)执行后,我们的模板页面,还没有挂载到页面上,只是存在与内存中,
为什么要存在内存中请看我的另一篇博客Vue源码解读双向数据绑定小结

  1. beforeMount

当模板在内存中编译完成,此时内存中的模板结构还未渲染至页面上,看不到真实的数据。此时用看到的只是模板页面

  1. Create vm.$el and replace ‘el’ with it

这一步,正在把内存中渲染好的模板结构替换至真实的dom结构也就是页面上

  1. mounted

此时,页面渲染好,用户看到的是真实的页面数据, 生命周期创建阶段完毕,进入到了运行中的阶段,若此时用到了第三方的ui插件,需要初始化插件时 放在此生命周期函数中

  1. 生命周期运行中

当数据被修改后when data changes 零次或n次,beforeUpdate、updated就执行几次

10.1 beforeUpdate
当执行此函数,数据时新的,但是页面是旧的
10.2 Virtual DOM re-render and patch
正在根据最近的data数据,重新渲染内存中的模板结构,并把渲染好的模板结构,替换至页面上
10.3 updated
页面已经完成了更新,此时,data数据和页面的数据都是新的

  1. beforeDestroy

当执行此函数时,组件即将被销毁,但是还没有真正开始销毁,此时组件的data、methods数据或方法 还可被调用

  1. Teardown……

注销组件及舰艇函数

  1. destroyed

组件已经完成了销毁

猜你喜欢

转载自blog.csdn.net/weixin_41643133/article/details/88710125