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 相关文章推荐
JavaScript中null与undefined分析
Jul 25 Javascript
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
js中的preventDefault与stopPropagation详解
Jan 29 Javascript
让人蛋疼的JavaScript语法特性
Sep 30 Javascript
JQuery实现带排序功能的权限选择实例
May 18 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
Aug 26 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
微信小程序收货地址API兼容低版本解决方法
May 18 Javascript
js滚轮事件 js自定义滚动条的实现
Jan 18 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
获得Google PR值的PHP代码
2007/01/28 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
php求斐波那契数的两种实现方式【递归与递推】
2019/09/09 PHP
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
Python3.x中自定义比较函数
2015/04/24 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
pandas取出重复数据的方法
2019/07/04 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
五型班组建设方案
2014/02/10 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
实验室安全管理制度
2015/08/05 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Python  lambda匿名函数和三元运算符
2022/04/19 Python