父子组件生命周期及子组件获取数据传值问题剖析

 更新时间:2023年10月12日 08:33:55   作者:孤独的野鬼  
这篇文章主要介绍了父子组件生命周期及子组件获取数据问题剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、父子组件的生命周期

1.普通父子组件:

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

2.爷组件Y、父组件F、子组件Z

其中父组件为component(:is="")写法,

子组件为按需引入写法 

switch(this.pos){
    case enums.top:
        return ()=> import("./top.vue")
    default:
        return ()=>import("./default.vue")
}

生命周期:

爷beforeCreate-爷created->爷beforeMount->父beforeCreate->父created->父beforeMount->父mounted->爷mounted->子beforeCreate->子created->子beforeMount->子mounted

二、父传子props数据问题分析

1.异步数据问题 在子组件的created和mounted打印不到最新的props 

如父组件传过来的数据是created中请求接口获取的,走到父created遇见请求接口的异步任务,会将其放到一个任务队列,继续执行生命周期(生命周期是同步的)钩子,执行到子组件的created和mounted,还没开始请求接口当然打印不到最新的数据,只能打印到父组件在data中定义的该数据

注意:如果在created中有await语法则await之后的代码块同样的也会被放入任务队列,先执行子组件的生命周期,子挂载后再执行父mounted中的同步代码,等所有同步任务执行完再执行await的异步及await之后的代码块

2.同步数据 父组件在data定义的数据或执行到子created前父组件生命周期中的同步数据

同步数据可以在子组件的created中直接打印处理

三、子组件渲染及如何处理父组件的异步数据 

1.无需在子组件中进行处理的数据

如父传递的数据无需特别处理,不论该数据是同步异步,都可用来展示,因为vue是响应式的即使异步数据等数据更新后页面后自动刷新的,不过若为异步数据在子的created里打印不到最新的,不过为什莫要打印呢哈哈

2.子对接受的父数据需要处理

同步:可直接在created写方法进行处理

异步:

方案一:watch 监听到传来的新数据时通过方法进行处理

方案二:在父组件添加v-if 如下,请求接口后 给list赋值,通过list的长度判断是否展示模块

这样就可以确保子组件执行created值一定是接口的值然后再进行处理,相当于把数据变成同步的了

topModule(v-if="list.length")
data(){
    return {
        list:[]   
     }
}

以上就是父子组件生命周期及子组件获取数据问题的详细内容,更多关于父子组件生命周期传值的资料请关注脚本之家其它相关文章!

相关文章

  • vue el-radio单选传值和默认选中方式

    vue el-radio单选传值和默认选中方式

    文章介绍了一个父组件和子组件的交互过程,父组件通过点击“关联公司”输入框弹出子组件dialog,子组件中使用SelectCompany.vue实现默认选中功能,作者分享了个人经验,希望能对大家有所帮助
    2025-01-01
  • vue3+vite+ts父子组件之间的传值

    vue3+vite+ts父子组件之间的传值

    随着vue2的落幕,vue3越来成熟,有必要更新一下vue3的父子组件之间的传值方式,这里介绍下vue3+vite+ts父子组件之间的传值方式实例详解,感兴趣的朋友一起看看吧
    2023-12-12
  • vue打包项目版本号自加的操作步骤

    vue打包项目版本号自加的操作步骤

    项目每次打包后都需要改动项目版本号,这个改动每次都需要在package.json中修改version,比较麻烦,到底有没有一种打包后版本号自加的办法,这篇文章主要介绍了vue打包项目版本号自加的步骤,需要的朋友可以参考下
    2022-09-09
  • VUE配置history路由模式配置详细举例

    VUE配置history路由模式配置详细举例

    这篇文章主要给大家介绍了关于VUE配置history路由模式配置的相关资料,History模式是Vue路由的另一种模式,在History模式下URL中的路径不再使用#符号,而是直接使用正常的路径形式,需要的朋友可以参考下
    2023-12-12
  • 面试官常问Vue和React区别解析

    面试官常问Vue和React区别解析

    Vue和React都是流行的前端框架,它们有很多相似之处,如组件化和使用虚拟DOM,但是,它们在设计理念、组件存在形式、diff优化和中文文档方面存在一些不同,这篇文章给大家介绍面试官常问Vue和React区别,感兴趣的朋友一起看看吧
    2025-02-02
  • 详解基于Vue-cli搭建的项目如何和后台交互

    详解基于Vue-cli搭建的项目如何和后台交互

    这篇文章主要介绍了详解基于Vue-cli搭建的项目如何和后台交互,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 使用webpack手动搭建vue项目的步骤

    使用webpack手动搭建vue项目的步骤

    这篇文章主要介绍了从零使用webpack手动搭建vue项目的步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • vue使用Google地图的实现示例代码

    vue使用Google地图的实现示例代码

    这篇文章主要介绍了vue使用Google地图的实现示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 解决vue attr取不到属性值的问题

    解决vue attr取不到属性值的问题

    今天小编就为大家分享一篇解决vue attr取不到属性值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue3 Element Plus表格默认显示一行实例

    Vue3 Element Plus表格默认显示一行实例

    这篇文章主要介绍了Vue3 Element Plus表格默认显示一行实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07

最新评论