针对上图生命周期序号下表进行解释:

  1. new vue() : 这是new了一个vue的实例对象;此时就会进入组件的创建过程。

  2. Init Events & Lifecycle :初始化组件的事件和生命周期函数;当执行完这一步之后,组件的生命周期函数就已经全部初始化好了,等待着依次去调用。

  3. beforeCreate :官方说明:在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

    解释:这是第一个生命周期函数;此时,组件的data和methods以及页面DOM结构,都还没有初始化;所以此阶段,什么都做不了。

  4. Init injections & reactivity :这个阶段中,正在初始化data和methods中的数据以及方法。

  5. created :
    官方说明:实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。

    解释:这个组件创建阶段第二个生命周期函数,此时,组件的data和methods已经可以用了;但是页面还没有渲染出来;在这个生命周期函数中,我们经常会发起Ajax请求;

  6. 正在解析模板结构,把data上的数据拿到,并且解析执行模板结构汇总的指令;当所有指令被解析完毕,那么模板页面就被渲染到内存中了;当模板编译完成,我们的模板页面,还没有挂载到页面上,只是存在于内存中,用户看不到页面;

  7. beforeMount :
    官方说明:在挂载开始之前被调用:相关的 render 函数首次被调用。

    解释:当模板在内存中编译完成,会立即执行实例创建阶段的第三个生命周期函数,这个函数就是beforeMount,此时内存中的模板结构,还没有真正渲染到页面上;此时,页面上看不到真实的数据,用户看到的只是一个模板页面而已;

  8. 这一步把正在内存中渲染好的模板结构替换到页面上;

  9. mounted :
    官方说明:el 被新创建的 vm.$ el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。

    解释:mounted是组件创建阶段最后的一个生命周期函数;此时,页面已经真正的渲染好了,用户可以看到真实的页面数据了;当这个生命周期函数执行完,组件就离开了创建阶段,进入到了运行中的阶段;如果大家使用到一些第三方的UI插件,而且这个插件还需要被初始化,那么,必须在mounted中来初始化插件;

  10. 组件运行汇总的生命周期函数;组件运行中的生命周期函数,会根据data数据的变化,有选择性的被触发0次货N次;

  11. beforeUpdate :
    官方说明:数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。

    解释:在执行beforeUpdate运行中的生命周期函数的时候,数据肯定是最新的;但是页面上呈现的数据还是旧的

  12. 正在根据最新的data数据,重新渲染内存中的的模板结构;并把渲染好的模板结构替换到页面上

  13. updated :
    官方说明:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。
    解释:页面也完成了更新,此时,data数据是最新的,同时,页面上呈现的数据也只最新的。

  14. beforeDestroy :
    官方说明:实例销毁之前调用。在这一步,实例仍然完全可用。
    解释:当执行beforeDestroy的时候,组件即将被销毁,但是还没有真正开始销毁,此时组件还是正常可用的;data、methods等数据或方法,依旧可以被正常访问

  15. 销毁过程

  16. destroyed :
    官方说明:vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

    解释:组件已完成了销毁,组件无法使用,data和methods都不可使用。

测试

<template><div><p v-text="str1" v-if="isShow"></p><p v-text="str2" v-else></p><button @click="destroy">销毁</button></div>
</template><script>
export default {name: "LifeCircle",beforeCreate() {console.log('1:beforeCreate()');},data() {return {isShow: false,str1: '第一条',str2: '第二条'}},methods: {destroy() {this.$destroy();}},created() {console.log('2:created()');},beforeMount() {console.log('3:beforeMount()');},mounted() {console.log('4:mounted()');this.IntervalId = setInterval(() => {console.log('--------------')this.isShow = !this.isShow;}, 1000);},beforeUpdate() {console.log('5:beforeUpdate()');},updated() {console.log('6:updated()');},beforeDestroy() {console.log('7:beforeDestroy()');clearInterval(this.IntervalId);},destroyed() {console.log('8:destroyed()');}
}
</script><style scoped></style>

运行结果:

Vue:vue组件生命周期相关推荐

  1. vue父子组件生命周期顺序_vue父子组件生命周期执行顺序

    Parent -- Child1 -- Child2 装载 parent beforeCreate parent created parent beforeMount child1 beforeCre ...

  2. Vue父子组件生命周期

    Vue父子组件生命周期 Vue实例需要经过创建.初始化数据.编译模板.挂载DOM.渲染.更新.渲染.卸载等一系列过程,这个过程就是Vue的生命周期,Vue中提供的钩子函数有beforeCreate.c ...

  3. vue父子组件生命周期执行顺序_关于Vue组件的生命周期及执行顺序

    本文主要讲述了:Vue组件渲染时的生命周期及执行顺序 Vue组件数据变更时的生命周期及执行顺序 Vue组件嵌套时的生命周期及执行顺序 正文 组件渲染时的生命周期 在组件渲染时,每个Vue组件都有4个生 ...

  4. vue父子组件生命周期执行顺序

    生命周期: 一个组件从创建到销毁的整个过程就是生命周期. 生命周期函数(钩子函数): vue框架内置函数,随着组建的生命周期,自动按次序执行. beforeCreate:创建实例之前执行,元素和数据都 ...

  5. Vue父子组件生命周期的执行顺序

    加载渲染过程 父组件先创建,然后子组件创建:子组件先挂载,然后父组件再挂载 即生命周期如下 父beforeCreate 父created 父beforeMount 子beforeCreate 子cre ...

  6. Vue父子组件生命周期的先后顺序

    初次渲染完成触发的声明周期 beforeCreate() ,created() beforeMount(),mounted() 组件的调用顺序是先父后子,渲染完成的顺序是先子后父.组件的销毁操作是先父 ...

  7. Vue父子组件生命周期触发顺序

    父子组件钩子函数执行顺序 父 beforeCreate 父 created 父 beforeMount 子 beforeCreate 子 created 子 beforeMount 子 mounted ...

  8. day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法

    系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...

  9. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...

    昨日内容回顾 0. 组件注意事项!!!data属性必须是一个函数!1. 注册全局组件Vue.component('组件名',{template: ``})var app = new Vue({el: ...

  10. Vue组件生命周期钩子和Vue-Router路由钩子的执行顺序

    Vue组件生命周期钩子的执行顺序如下图所示 链接:https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6% ...

最新文章

  1. 墨菲的鬼魂重现 / 金蝶ERP 资安大漏洞 (非授权补丁自动下载安装)
  2. 把整形数据格式化为指定长度的字符串
  3. VC++ 使用attributes定义接口
  4. LeetCode 1904. 你完成的完整对局数
  5. 【php-laravel框架】第一节:laravel版本的选择、说明、下载安装方式
  6. 特斯拉最廉价车型——基础版Model 3将取消网售
  7. CUDA C程序中的函数类型
  8. go中make和new的用法,以及nil用法
  9. NOIP 2011 Day 1
  10. 添加css单词换行连字符
  11. 处理App状态改变的策略
  12. GPU+Cuda8.0+cudnn8+OpenCv2.4.13+Caffee 安装教程嘎嘎
  13. Spinner的用法(转)
  14. 服务器状态错误是怎么回事,内部服务器错误500是什么?该如何解决?
  15. HTML超链接基本属性
  16. ECMAScript 2022 正式发布
  17. 【数据结构】有限状态自动机(FSA)的理解-LeetCode表示数值的字符串(有效数字)题解(Java)
  18. .net是什么域名?域名注册需要实名制吗?
  19. python 查找重复文件,以及查找重复视频的一些思路
  20. 【博学谷学习记录】超强总结,用心分享丨一种创新的表格

热门文章

  1. 6.Nginx 的 Rewrite 规则
  2. 29. git ignore
  3. 3.2 Zend_Db_Select
  4. Python-UDP编程
  5. javaScript函数封装
  6. 学习MyBatis之简单入门HelloWorld
  7. Windows 常用的 CMD 命令
  8. eclipse 使用问题
  9. 14.2.4 InnoDB Undo Logs
  10. cocos2dx 开发成长之路 004