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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
Mar 10 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 Javascript
javascript 数组的定义和数组的长度
Jun 07 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
js核心基础之构造函数constructor用法实例分析
May 11 Javascript
小程序实现短信登录倒计时
Jul 12 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简单封装了一些常用JS操作
2007/02/25 PHP
功能强大的php分页函数
2016/07/20 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
Python的高级Git库 Gittle
2014/09/22 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
《识字五》教学反思
2014/03/01 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年减负工作总结
2014/12/10 职场文书
工程质检员岗位职责
2015/04/08 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Python打包exe时各种异常处理方案总结
2021/05/18 Python
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
java开发双人五子棋游戏
2022/05/06 Java/Android
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL