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 相关文章推荐
在网页里看flash的trace数据的js类
Jan 10 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
Apr 13 Javascript
LazyLoad 延迟加载(按需加载)
May 31 Javascript
$.getJSON在IE下失效的原因分析及解决方法
Jun 16 Javascript
jQuery中index()的用法分析
Sep 05 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
动态加载js文件简单示例
Apr 21 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
Vue2几种常见开局方式详解
Sep 09 Javascript
解决微信小程序防止无法回到主页的问题
Sep 28 Javascript
关于layui时间回显问题的解决方法
Sep 24 Javascript
解决Vue-cli无法编译es6的问题
Oct 30 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扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php实现文章评论系统
2019/02/18 PHP
PHP递归的三种常用方式
2019/02/28 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
javascript截取字符串小结
2015/04/28 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
python如何爬取个性签名
2018/06/19 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
网页美工求职信
2014/02/15 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
党校毕业个人总结
2015/02/28 职场文书
大学生求职意向书
2015/05/11 职场文书
2016继续教育研修日志
2015/11/13 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python