vue中父级与子组件生命周期的先后顺序
1.vue的生命周期

2.views/createrCustormer.vue为父级
<script>
import expressService from '@/components/expressService'
export default {
components: {
expressService
},
beforeCreate() {
const time = (new Date()).getTime()
console.group('beforeCreate父级 实例初始化进行数据观测/事件配置', time)
},
created() {
const time = (new Date()).getTime()
console.log('created父级 实例创建完成', time)
},
beforeMount() {
const time = (new Date()).getTime()
console.group('beforeMount父级 挂载开始', time)
},
mounted() {
const time = (new Date()).getTime()
console.log('mounted父级 挂载到实例上', time)
},
beforeUpdate() {
const time = (new Date()).getTime()
console.group('beforeUpdate父级 数据更新前', time)
},
updated() {
const time = (new Date()).getTime()
console.log('updated父级 组件DOM更新', time)
},
beforeDestroy() {
const time = (new Date()).getTime()
console.log('updated父级', time)
console.group('beforeDestroy父级 实例销毁前', time)
},
destroyed() {
const time = (new Date()).getTime()
console.log('destroyed父级 实例销毁完成', time)
}
}
</script>
3.components/expressService.vue
<template>
<div class="expressService">
子级生命周期
</div>
</template> <script>
export default {
beforeCreate() {
const time = (new Date()).getTime()
console.group('beforeCreate子级', time)
},
created() {
const time = (new Date()).getTime()
console.log('created子级', time)
},
beforeMount() {
const time = (new Date()).getTime()
console.group('beforeMount子级', time)
},
mounted() {
const time = (new Date()).getTime()
console.log('mounted子级', time)
},
beforeUpdate() {
const time = (new Date()).getTime()
console.group('beforeUpdate子级', time)
},
updated() {
const time = (new Date()).getTime()
console.log('updated子级', time)
},
beforeDestroy() {
const time = (new Date()).getTime()
console.group('beforeDestroy子级', time)
},
destroyed() {
const time = (new Date()).getTime()
console.log('destroyed子级', time)
}
}
</script>
4.打印看一下什么情况

从打印我们可以看出来,父级beforeMount挂载开始时才会进入到子级beforeCreate实例化开始,但是子级mounted挂载实例比父级mounted挂载实例要快1毫秒,为什么呢?并且子级初次渲染时没有数据更新,那什么时候子级会数据更新呢?
5.子级mounted挂载实例比父级mounted挂载实例要快1毫秒
当父组件执行完beforeMount挂载开始后,会依次执行子组件中的钩子,直到全部子组件mounted挂载到实例上,父组件才会进入mounted钩子
6.子级数据更新
当对子级进行事件处理时,就会触发哦,从下图可以看出,子级进行事件,会先触发父级beforeUpdate钩子,再去触发子级beforeUpdate钩子,下面又是先执行子级updated钩子,后执行父级updated钩子,同理与5相同

7.心得
这个问题之前在面试的时候被提到过很多遍,主要考的是对vue原理的深度了解的有多少,面试真的是一个了解当下前端趋势的一个很好的方法,面试中会遇到各种在工作中没有遇到过的问题,第一次不懂没关系,以后慢慢懂就好啦!欢迎大神来纠正bug,哈哈哈
vue中父级与子组件生命周期的先后顺序的更多相关文章
- vue中的父组件及子组件生命周期的执行顺序
一.没有任何任何显示与隐藏限制条件的情况下: 1.运行的顺序依次是: 父组件created→父组件beforeMounted→子组件created→子组件beforeMounted→子组件mounte ...
- 简单记录一下vue生命周期及 父组件和子组件生命周期钩子执行顺序
首先,vue生命周期可以用下图来简单理解 当然这也是官方文档的图片,详细的vue周期详解请参考这里 然而当同时存在父子组件的时候生命周期钩子是如何执行的呢? 请看下文: 加载渲染过程父beforeCr ...
- Vue 的父组件和子组件生命周期钩子执行顺序是什么
加载渲染过程父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-&g ...
- Vue中利用$emit实现子组件向父组件通信
Vue中利用$emit实现子组件向父组件通信 父组件 <template> <div> <p>我是父组件</p> <child :isShow=& ...
- Vue--父组件传数据给子组件,子组件生命周期过程拿到数据的情况
需求: 在子组件渲染之前,我要修改数据的某个字段 结果是 组件在beforeUpdate,updated 的状态才能拿到父组件的数据 那么证明,我根本无法在beforeUpdate,updated两个 ...
- Vue.JS快速上手(组件生命周期)
一.什么是组件 组成网页独立功能基本单元(片段), 复用.维护.性能, Vue.js中的组件就是一个Vue的实例,Vue中的组件包含data/methods/computed. 一个Vue.js的应用 ...
- react学习(6)——关于组件生命周期的问题
在项目开发的过程中,遇到了一个问题: 父组件请求后台数据,收到后将数据以props传给子组件,子组件根据收到数据的不同,显示不同的内容,同时,子组件自身可以根据click操作改变根据父组件的数据显示的 ...
- 1.4 React 组件生命周期
1.4.1 组件 React 中组件有自己的生命周期方法,简单理解可以为组件从 出生(实例化) -> 激活 -> 销毁 生命周期 hook.通过这些 hook 方法可以自定义组件的特性. ...
- Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...
随机推荐
- MVC中Model BLL层Model模型互转
MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...
- linux 流量监控利器:iftop
在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息. 查看网络状态可以使用netstat.nmap等工具. 若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. if ...
- Python进阶(五)----内置函数Ⅱ 和 闭包
Python进阶(五)----内置函数Ⅱ 和 闭包 一丶内置函数Ⅱ ####内置函数#### 特别重要,反复练习 ###print() 打印输入 #sep 设定分隔符 # end 默认是换行可以打印到 ...
- 【面试突击】- sql语句的优化分析
开门见山,问题所在 原文地址:http://www.cnblogs.com/knowledgesea/p/3686105.html sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种 ...
- Workerman简单开发示例实践(一)
一.去官网下载workerman,地址:https://www.workerman.net/download,下载后解压任意文件夹. 二.在解压文件目录下新建http_test.php,输入如下代码: ...
- 原油petrolaeum石油 Archaic spelling of petroleum
petrolaeum (uncountable) Archaic spelling of petroleum petroleum See also: Petroleum Contents [hide] ...
- Leetcode刷题python
Two Sum 两数==target 方法二更好 题1,对时间复杂度有要求O(n),所以维护一个字典,遍历过的数值放在字典中,直接遍历时候查找字典中有没有出现差,查找字典时间复杂度是O(1),所以O( ...
- linux技能四 用户管理
用户管理:用户类型,添加用户,修改用户,删除用户,查看用户信息,用户的切换,添加组,修改组,删除组,查看组 用户类型:超级用户:root,UID=1 系统用户:运行系统服务的,不能登陆的,UID=(1 ...
- 第一个 macOS 64位 kbmmw 服务器
前几天,Delphi 10.3.2 正式发布,这个小版本升级却增加了一个非常大的平台支持,增加了 macos 64位的支持,今天做一个macOS 64位的kbmmw应用,让kbmmw 服务器的应用更广 ...
- MySQL Index--BNL/ICP/MRR/BKA
MySQL关联查询算法: BNL(Block Nested-Loop) ICP(Index Condition Pushdown) MRR(Multi-Range Read) BKA(Batched ...