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 相关文章推荐
学习js所必须要知道的一些
Mar 07 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
javascript 模式设计之工厂模式学习心得
Apr 27 Javascript
文本框获得焦点和失去焦点的判断代码
Mar 18 Javascript
js实现网站首页图片滚动显示
Feb 04 Javascript
一个JavaScript去除字符串末尾的空白实例代码
Sep 22 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
js中class的点击事件没有效果的解决方法
Oct 13 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
Oct 16 Javascript
vue+elementUI实现简单日历功能
Sep 24 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
教师自我鉴定
2013/12/13 职场文书
伊索寓言教学反思
2014/05/01 职场文书
国贸专业求职信
2014/06/28 职场文书
个人四风对照检查材料
2014/09/26 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2015年酒店工作总结
2015/04/28 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
MySQL自定义函数及触发器
2022/08/05 MySQL