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+Ajax+Json的高效分页实现代码
Oct 29 Javascript
基于javascript滚动图片具体实现
Nov 18 Javascript
清除div下面的所有标签的方法
Feb 17 Javascript
JavaScript实现继承的4种方法总结
Oct 16 Javascript
JQuery勾选指定name的复选框集合并显示的方法
May 18 Javascript
vue.js异步上传文件前后端实现代码
Aug 22 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
AngularJS监听ng-repeat渲染完成的方法
Mar 20 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
Sep 21 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 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 error_log 函数的使用
2009/04/13 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
PHP 断点续传实例详解
2017/11/11 PHP
jquery 指南/入门基础
2007/11/30 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
Python3实现并发检验代理池地址的方法
2016/09/18 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Django Celery异步任务队列的实现
2019/07/24 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
Python中实现一行拆多行和多行并一行的示例代码
2020/09/06 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
秘书英文求职信范文
2014/01/31 职场文书
2016年元旦致辞
2015/08/01 职场文书
先进个人主要事迹范文
2015/11/04 职场文书