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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
js玩一玩WSH吧
Feb 23 Javascript
JQuery 学习笔记 选择器之一
Jul 23 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
Jan 20 Javascript
使用firebug进行调试javascript的示例
Dec 16 Javascript
javascript去掉代码里面的注释
Jul 24 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
jQuery设计思想
Mar 07 Javascript
使用gulp搭建本地服务器并实现模拟ajax
Apr 05 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
使用vue2实现购物车和地址选配功能
Mar 29 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中养成7个面向对象的好习惯
2010/07/17 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
博士毕业生自我鉴定范文
2014/04/13 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
介绍长城的导游词
2015/01/30 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
Java版 简易五子棋小游戏
2022/05/04 Java/Android
TypeScript 内置高级类型编程示例
2022/09/23 Javascript