首页 > 其他分享 >vue父子组件的生命周期加载顺序

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

时间:2024-09-26 23:22:13浏览次数:9  
标签:生命周期 加载 嵌套 vue 组件 执行 顺序

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

官网里vue组件的生命周期钩子汇总列举如下:

生命周期

单个 vue 组件的生命周期执行顺序已经非常熟悉了。但是,如果有嵌套组件,父子组件的生命周期的执行顺序是什么呢?嵌套组件又分为2种情况:一种是在template直接引入(大部分场景),另一种是element-ui里面的嵌套,两种执行顺序是否一样呢?马上开启探索和验证之旅~

1. template直接引入式
<template>
  <div class="detail-table">
        <detail-table :row="row"></detail-table>
  </div>
</template>

1.1 加载渲染过程执行顺序

加载渲染过程

1.2 activated 执行时机

activated

activated在子组件mounted(全部挂载到页面)之后,父组件mounted之前触发。

1.3 更新过程执行顺序

update

1.4 destory 过程执行顺序

destory

1.5 deactivated 执行时机
  deactivated 函数的触发时间是在视图更新时触发。因为当视图更新时才能知道 keep-alive 组件被停用了,所以分为两种情况。
1.5.1. 更新过程中的执行时机:在父beforeUpdate 和update之间执行

更新过程中

1.5.2. 销毁过程中的执行时机:在父子组件beforeDestroy之间执行

销毁过程中

延申:deactivated可以通过条件判断或者router-view去触发
1)条件判断式

  <keep-alive>
      <detail-table :row="row" v-if="show"></detail-table>
   </keep-alive>

2)router-view

<keep-alive include="child">
     <router-view></router-view>
</keep-alive>

router-view式需要注意的点:

  • include 为每个子组件的name字段,不是文件名;如果 name 不可用,则匹配当前组件 components 配置中的注册名称。
  • 当匹配条件同时在 includeexclude 存在时,以 exclude 优先级最高。
  • keep-alive用法参考:[keep-alive]
2. element-ui里面的表格嵌套
   <el-table
      :style="'margin-top:30px'"
      row-key="id"
      :data="data"
      border
      stripe
      :highlight-current-row="true"
      :header-cell-style="headerCellStyle"
      :cell-style="cellStyle"
      :max-height="height"
      @expand-change="expandChange"
      ref="multipleTable"
      @selection-change="handleSelectionChange"
      v-loading="listLoading"
      element-loading-text="拼命加载中"
    >
      <el-table-column type="expand">
        <template slot-scope="scope">
          <detail-table
            :row="row"
            :key="scope.row.id"
          ></detail-table>
        </template>
      </el-table-column>
      <el-table-column
        v-for="item in columns"
        :key="item.prop"
        :label="item.label"
        :prop="item.prop"
        :formatter="item.formatter"
        :align="'center'"
      ></el-table-column>     
    </el-table>

2.1 加载渲染过程和更新执行顺序

table-加载渲染

2.2 destory 过程执行顺序

table-destory

以上可以看出,两种执行顺序是不一样的,尤其加载渲染过程和更新过程。template直接引入式是先挂载子组件,再挂载父组件,而element-ui的表格嵌套是父组件加载更新完再加载子组件,等子组件更新完触发父组件更新。

参考:
[Vue父子组件生命周期执行顺序]

标签:生命周期,加载,嵌套,vue,组件,执行,顺序
From: https://blog.csdn.net/baidu_33164415/article/details/142580196

相关文章

  • [附源码]在线音乐系统+SpringBoot+Vue前后端分离
    今天带来一款优秀的项目:在线音乐系统源码 。系统采用的流行的前后端分离结构,内含功能包括"管理后台",“用户端”,“评论系统”,“歌手,歌曲管理”,“用户系统”,"统计"等功能。如果您有任何问题,也请联系小编,小编是经验丰富的程序员!一.系统演示视频 https://githubs.xy......
  • springboot+vue青年大学习数据分析系统的设计与实现5ek29
    目录功能和技术介绍系统实现截图开发核心技术介绍:使用说明开发步骤编译运行需求分析系统设计软件测试核心代码部分展示详细视频演示源码获取功能和技术介绍本项目包含程序源码和MySql脚本和文档,idea开发,支持Eclipse。对项目进行分阶段,分模块的开发,对项目进行黑盒......
  • 基于Node.js+vue基于java的校园疫情管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景近年来,全球范围内频繁爆发的疫情事件对教育领域产生了深远影响,特别是在校园环境中,如何有效防控疫情、保障师生健康安全成为了亟待解决的问题。传统的校园管......
  • 基于Node.js+vue基于springboot的模拟面试平台7tch0(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网应用的广泛普及,传统的招聘模式正逐步向数字化、智能化转型。面试作为招聘流程中的关键环节,其效率与效果直接影响到企业的人......
  • 基于Node.js+vue在线考试系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展和普及,教育领域正经历着深刻的变革。传统考试模式受限于时间、地点和资源的限制,已难以满足现代教育的多元化需求。在线考试系统作......
  • vue 的v-bind和v-model
    1.vue中存在很多绑定的操作,常见的操作为:2.这次主要学习v-bind,v-model.v-bind,用来绑定标签,v-model用来绑定表单.使用message来绑定了一个图片作为效果图.同时使用url来绑定input的txt输入,并且将url和超链接的href链接达到可以跳转网页的效果点击说走就走:修改链接,......
  • 前端使用webpack本地实现编译时出现错误[cached] 1 asset ERROR in main Module not
    一:概述Webpack是一个现代JavaScript应用程序的静态模块打包工具。它主要用于将JavaScript代码、CSS、图片等资源模块化管理,并最终打包成一个或多个文件,方便在浏览器中使用。以下是对Webpack的详细介绍:主要特点模块化:Webpack支持ES6模块、CommonJS和AMD模块,能够将各种......
  • vue tsx功能测试,包含v-model 实现,slot实现,数据响应注意点
    child.tsximport{defineComponent}from'vue';//响应式数据需要放在函数外面,或者放在setup里面constdata1=ref(123);functionmyComponent(){constdata2=ref(34);//在这里定义ref无法响应式functiondata2ClickHanlder(){data2.valu......
  • 如何打造流浪天使乐园管理系统?Java SpringBoot+Vue技术解析
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 掌握 Vuejs:“从查询中检索对象参数”项目
    深入vue.js的世界并学习如何解决vue-router库中具有挑战性的错误。这个项目名为“从查询中检索对象参数”,是一次全面的实践体验,不仅可以增强您的vue.js技能,还可以提高您解决问题和调试的能力。在这个项目中,您将踏上修复将对象推送到查询参数时导致问题的错误的旅程。通过逐......