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表单验证代码
Aug 02 Javascript
调用js时ie6和ie7,ff的区别
Aug 19 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
jQuery.buildFragment使用方法及思路分析
Jan 07 Javascript
推荐25个超炫的jQuery网格插件
Nov 28 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
基于pako.js实现gzip的压缩和解压功能示例
Jun 13 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
JS立即执行函数功能与用法分析
Jan 15 Javascript
js针对图片加载失败的处理方法分析
Aug 24 Javascript
微信小程序页面渲染实现方法
Nov 06 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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令牌 Token改进版
2008/07/18 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
9个比较实用的php代码片段
2016/03/15 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
Python入门篇之条件、循环
2014/10/17 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
python得到windows自启动列表的方法
2018/10/14 Python
python实现归并排序算法
2018/11/22 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
python实现根据文件格式分类
2019/10/31 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
sort命令的作用和用法
2013/08/25 面试题
电子商务专业实习生自我鉴定
2013/09/24 职场文书
研发工程师的岗位职责
2013/11/18 职场文书
导购员的岗位职责
2014/02/08 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android