vue嵌套组件的生命周期

vue嵌套组件的生命周期

问:有A、B、C三个组件,A为B的父组件,B为C的父组件,它们的创建和挂载顺序是怎样的?即(beforeCreate/created,beforeMounte/mounted)的执行顺序

代码演示

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <script src="https://cdn.jsdelivr.net/npm/vue"></script>
 8     <title>嵌套组件的生命周期</title>
 9 </head>
10 <body>
11     <div id="app">
12         <component-a />
13     </div>
14
15     <script>
16         Vue.component(‘component-a‘, {
17             template: ‘<div><component-b></component-b></div>‘,
18             beforeCreate () {
19                 console.log(‘beforeCreate: A‘);
20             },
21             created() {
22                 console.log(‘created: A‘);
23             },
24             beforeMount() {
25                 console.log(‘beforeMount: A‘);
26             },
27             mounted() {
28                 console.log(‘mounted: A‘);
29             },
30         });
31
32         Vue.component(‘component-b‘, {
33             template: ‘<p><component-c></component-c></p>‘,
34             beforeCreate () {
35                 console.log(‘beforeCreate: B‘);
36             },
37             created() {
38                 console.log(‘created: B‘);
39             },
40             beforeMount() {
41                 console.log(‘beforeMount: B‘);
42             },
43             mounted() {
44                 console.log(‘mounted: B‘);
45             },
46         });
47
48         Vue.component(‘component-c‘, {
49             template: ‘<span>hello world</span>‘,
50             beforeCreate () {
51                 console.log(‘beforeCreate: C‘);
52             },
53             created() {
54                 console.log(‘created: C‘);
55             },
56             beforeMount() {
57                 console.log(‘beforeMount: C‘);
58             },
59             mounted() {
60                 console.log(‘mounted: C‘);
61             },
62         });
63
64         const app = new Vue({
65             el: ‘#app‘,
66             beforeCreate () {
67                 console.log(‘beforeCreate: Root‘);
68             },
69             created() {
70                 console.log(‘created: Root‘);
71             },
72             beforeMount() {
73                 console.log(‘beforeMount: Root‘);
74             },
75             mounted() {
76                 console.log(‘mounted: Root‘);
77             }
78         });
79     </script>
80 </body>
81 </html>

打印结果

 1 beforeCreate: Root
 2 created: Root
 3 beforeMount: Root
 4 beforeCreate: A
 5 created: A
 6 beforeMount: A
 7 beforeCreate: B
 8 created: B
 9 beforeMount: B
10 beforeCreate: C
11 created: C
12 beforeMount: C
13 mounted: C
14 mounted: B
15 mounted: A
16 mounted: Root

通过打印结果我们可以看到,beforeCreate、created、beforeMounted是按顺序执行,由外到内;而mounted即最终的挂载阶段则是由内到外,先将子组件挂载到dom上,然后再是父组件

为什么

其实想想就知道了,既然组件之间存在父子关系,即父嵌套子,那么子组件就相当于父组件的一部分,那肯定要先将其一部分先挂载到dom上,然后再将整个父组件挂载上去。

总结

父子组件嵌套的生命周期其实都是 先父后子 然后 先子后父。后续再加入update和destroy的相关代码

原文地址:https://www.cnblogs.com/---godzilla---/p/11441172.html

时间: 2024-08-06 02:08:42

vue嵌套组件的生命周期的相关文章

vue 父子组件的生命周期顺序

一.加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted 二.子组件更新过程 父beforeUpdate->子beforeUpdate->子updated->父updated 三.父组件更新过程 父beforeUpdate->父updated 四.销毁过程 父beforeDestroy-&

vue父子组件,生命周期

原文地址:https://www.cnblogs.com/hill-foryou/p/12353376.html

Vue 组件的生命周期

组件的生命周期 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="app"> <!-- <App></App> --> </div> &l

第九篇:Vue组件的生命周期钩子

组件的生命周期钩子 一.组件的生命周期:一个组件从创建到销毁的整个过程 二.生命周期钩子:在一个组件生命周期中,会有很多特殊的时间节点,且往往会在特定的时间节点完成一定的逻辑,特殊的事件节点可以绑定钩子 注:钩子 - 提前为某个事件绑定方法,当满足这个事件激活条件时,方法就会被调用 | 满足特点条件被回调的绑定方法就称之为钩子 <template> <div class="goods"> <Nav /> </div> </templ

angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子: 上节课,我们讲解了英雄列表,这节课我们讲解危机中心. 源代码: https://github.com/lewis617/angular2-tutorial/tree/gh-pages/router 运行方法: 在根目录下运行: http-server 路由嵌套 我们在app/app.component.ts中定义了路由url和视图组件,其中包括这样一项: app/app.componen

Vue环境搭建以及生命周期

Vue项目环境搭建 """ node ~~ python:node是用c++编写用来运行js代码的 npm(cnpm) ~~ pip:npm是一个终端应用商城,可以换国内源cnpm vue ~~ django:vue是用来搭建vue前端项目的 1) 安装node 官网下载安装包,安装:https://nodejs.org/zh-cn/ 2) 换源安装cnpm >: npm install -g cnpm --registry=https://registry.npm.t

React组件的生命周期

整个组件,从创建组件类开始,到渲染,到消亡的过程,就是组件的生命周期. 组件的生命周期可以分为三个阶段: 挂载阶段 更新阶段 卸载阶段 挂载阶段 在这个过程中,会触发以下几个事件 getDefaultProps,设置默认属性 getInitialState,设置初始状态 componentWillMount 即将挂载 render 渲染,就是挂载 componentDidMount 挂载完成 <!DOCTYPE html> <html> <head> <meta

Android React Native组件的生命周期及回调函数

熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开发中,React Native组件的生命周期,大致分为三个阶段,分别是: 1.组件第一次绘制阶段,这个阶段主要是组件的加载和初始化: 2.组件在运行和交互阶段,这个阶段组件可以处理用户交互,或者接收事件更新界面: 3.组件卸载消亡的阶段,这个阶段主要是组件的清理工作. 在Android React

ExtJS关于组件Component生命周期

extjs组件生命周期大体分为3个阶段:初始化.渲染.销毁. 第一阶段:初始化 初始化工作开始于组件的诞生,所有必须的配置设定.事件注册.预渲染处理等都在此时进行. 1.应用组件的配置: 当初始化一个组件的实例时,传递的组件配置对象包含了希望让组件拥有的所有功能,这些都是在Ext.Component基类的前几行代码完成的. 2.注册事件: 诸如enable/disable,show,hide,render,destory,state restore,state save等等事件,是所有继承于Ex