vue同步父子组件和异步父子组件的生命周期顺序问题


Posted in Javascript onOctober 07, 2018

关于vue组件的引入方式有两种

一、 同步引入

例子: import Page from '@/components/page'

二、异步引入

例子:const Page = () => import('@/components/page')

或者: const Page = resolve => require(['@/components/page'], page)

两种引入方式的不同之处在于:

同步引入时生命周期顺序为:父组件的beforeMount、created、beforeMount --> 所有子组件的beforeMount、created、beforeMount --> 所有子组件的mounted --> 父组件的mounted

例子:

<! -- App.vue -->
<template>
 <div id="app">
  <New /> <!-- 子组件一 -->
  <Page /> <!-- 子组件二 -->
  <router-view/>
 </div>
</template>
<script>
import Page from '@/components/page' // 同步方式引入
import New from '@/components/new'
export default {
 name: 'App',
 components: {
  Page,
  New
 },
 beforeCreate () {
  console.log('父组件App -------> App beforeCreate')
 },
 created () {
  console.log('父组件App -------> App created')
 },
 mounted () {
  console.log('父组件App -------> App mounted')
 },
 beforeMount () {
  console.log('父组件App -------> App beforeMount')
 }
}
</script>
</script>

<!-- new.vue -->
<template>
 <div>
 <p>this is a new component</p>
 </div>
</template>

<script>
export default {
 name: 'new',
 created () {
  console.log('子组件new ----> new created')
 },
 beforeCreate () {
  console.log('子组件new ----> new beforeCreate')
 },
 mounted () {
  console.log('子组件new ----> new mounted')
 },
 beforeMount () {
  console.log('子组件new ----> new beforeMount')
 }
}
</script>

<!-- page.vue-->
<template>
 <div>
 <Job />
 <p>this is a page component</p>
 </div>
</template>

<script>
import Job from '@/components/job'
export default {
 name: 'page',
 components: {
 Job,
 },
 beforeCreate () {
 console.log('子组件page ----> page beforeCreate')
 },
 created () {
 console.log('子组件page ----> page created')
 },
 mounted () {
    console.log('子组件page ----> page mounted')
 },
 beforeMount () {
   console.log('子组件page ----> page beforeMount')
 }
}
</script>

<!-- job.vue -->
<template>
 <div>
 <p>this is a job component, in page.vue</p>
 </div>
</template>

<script>
export default {
 name: 'job',
 created () {
  console.log('孙组件job ------> job created')
 },
 beforeCreate () {
  console.log('孙组件job ------> job beforeCreate')
 },
 mounted () {
  console.log('孙组件job ------> job mounted')
 },
 beforeMount () {
  console.log('孙组件job ------> job beforeMount')
 }
}
</script>

vue同步父子组件和异步父子组件的生命周期顺序问题

异步引入时生命周期顺序:父组件的beforeCreate、created、beforeMount、mounted --> 子组件的beforeCreate、created、beforeMount、mounted

在上面的代码只需要修改引入的方式:

import Page from '@/components/page' // 同步方式引入
import New from '@/components/new'
import Job from '@/components/job'

改为:

const Page = () => import ('@/components/page') // 异步引入
const New = () => import ('@components/new')
const Job = () => import ('@/components/job'

结果:

vue同步父子组件和异步父子组件的生命周期顺序问题

总结

以上所述是小编给大家介绍的vue同步父子组件和异步父子组件的生命周期顺序问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
基于jQuery实现淡入淡出效果轮播图
Jul 31 Javascript
vue深入解析之render function code详解
Jul 18 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
Oct 14 jQuery
vue如何引入sass全局变量
Jun 28 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 Javascript
JS实现水平移动与垂直移动动画
Dec 19 Javascript
基于js实现数组相邻元素上移下移
May 19 Javascript
Vue面试题及Vue知识点整理
Oct 07 #Javascript
解决vue无法设置滚动位置的问题
Oct 07 #Javascript
cdn模式下vue的基本用法详解
Oct 07 #Javascript
vue实现添加与删除图书功能
Oct 07 #Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
Oct 07 #Javascript
JS函数内部属性之arguments和this实例解析
Oct 07 #Javascript
JS如何获取地址栏的参数实例讲解
Oct 06 #Javascript
You might like
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
详解Python多线程下的list
2020/07/03 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
服务宗旨标语
2014/07/01 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
体育教师研修感悟
2015/11/18 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python