1.vue的生命周期

2.views/createrCustormer.vue为父级

 
  <template>
    <expressService />
  </template>
<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中父级与子组件生命周期的先后顺序的更多相关文章

  1. vue中的父组件及子组件生命周期的执行顺序

    一.没有任何任何显示与隐藏限制条件的情况下: 1.运行的顺序依次是: 父组件created→父组件beforeMounted→子组件created→子组件beforeMounted→子组件mounte ...

  2. 简单记录一下vue生命周期及 父组件和子组件生命周期钩子执行顺序

    首先,vue生命周期可以用下图来简单理解 当然这也是官方文档的图片,详细的vue周期详解请参考这里 然而当同时存在父子组件的时候生命周期钩子是如何执行的呢? 请看下文: 加载渲染过程父beforeCr ...

  3. Vue 的父组件和子组件生命周期钩子执行顺序是什么

    加载渲染过程父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-&g ...

  4. Vue中利用$emit实现子组件向父组件通信

    Vue中利用$emit实现子组件向父组件通信 父组件 <template> <div> <p>我是父组件</p> <child :isShow=& ...

  5. Vue--父组件传数据给子组件,子组件生命周期过程拿到数据的情况

    需求: 在子组件渲染之前,我要修改数据的某个字段 结果是 组件在beforeUpdate,updated 的状态才能拿到父组件的数据 那么证明,我根本无法在beforeUpdate,updated两个 ...

  6. Vue.JS快速上手(组件生命周期)

    一.什么是组件 组成网页独立功能基本单元(片段), 复用.维护.性能, Vue.js中的组件就是一个Vue的实例,Vue中的组件包含data/methods/computed. 一个Vue.js的应用 ...

  7. react学习(6)——关于组件生命周期的问题

    在项目开发的过程中,遇到了一个问题: 父组件请求后台数据,收到后将数据以props传给子组件,子组件根据收到数据的不同,显示不同的内容,同时,子组件自身可以根据click操作改变根据父组件的数据显示的 ...

  8. 1.4 React 组件生命周期

    1.4.1 组件 React 中组件有自己的生命周期方法,简单理解可以为组件从 出生(实例化) -> 激活 -> 销毁 生命周期 hook.通过这些 hook 方法可以自定义组件的特性. ...

  9. Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)

    Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...

随机推荐

  1. dp的平行四边形优化

    证明过程转载自charliezhi2007的博客 题目链接 备用链接 分析:一道区间dp,状态转移方程\(dp[i][j]=min(dp[i][j],dp[i][s]+dp[s+1][j]+sum[j ...

  2. 图解HTTP(一)

    第一章 了解Web及网络基础 1.为知识共享为规划Web,基本理念是:借助多文档之间相互关联(你中有我,我中有你)形成的超文本,连成客户想参阅的WWW(World Wide Web). 2.提出了3项 ...

  3. css3实现半圆和圆效果

    在css2中,如果需要失效一些圆角或者半圆等等效果,一般是要通过ps等软件来处理的,在CSS3中,则不需要了,只需要通过border-radius就可以实现,大大方便了开发的效率. 无论圆角.圆弧.实 ...

  4. 使用MUI框架实现JQ购物车增减

    // 购物车数量减少$('.reduce').click(function () { addMinus(this,0)}); // 购物车数量增加$('.increase').click(functi ...

  5. jq对象才能使用jq方法,$(".a").eq(0) 和 $(”.a“)[0]

    <a class="a"></a> <a class="a"></a> <a class="a& ...

  6. IDEA整合SVN遇到的坑

    1.安装SVN客户端   注意客户端版本与汉化插件的版本匹配问题,否则汉化无效 2.安装客户端时第二项默认不安装记得要手动选择为安装,否则不会生成svn.exe,这个文件会在IDEA中配置 3.安装客 ...

  7. Xshell设置全局配色

    1.个人比较喜欢的配色: [XTerm] text=00ff80 cyan(bold)=00ffff text(bold)=e9e9e9 magenta=c000c0 green=80ff00 gre ...

  8. Linux-存储服务之NFS

    NFS介绍 官方文档 NFS(Network File System)即网络文件系统,它最大的功能就是通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS ...

  9. Codeforces Round #574 (Div. 2)题解

    比赛链接 传送门 A题 题意 \(n\)个人每个人都有自己喜欢喝的\(vechorka\)口味,现在给你\(\lceil n/2\rceil\)箱\(vechorka\),每箱有两瓶,问最多能有多少个 ...

  10. MySQL的增、删、改、查

    数据库的常用命令以及作用 用法 作用 CREATE database 数据库名称. 创建新的数据库 DESCRIBE 表单名称; 描述表单 UPDATE 表单名称 SET attribute=新值 W ...