做项目时候遇到一件怪事:
父组件向子组件<dialog-info/>传个参数arrdata,是个数组

因为是Array类型的参数,子组件中进行了接收,并且default通过函数返回一个空数组

然后子组件中例行公事验证下是否正常拿到值

惊呆了,竟然是空的数组!

可是vue调试工具中props正常拿到了啊

有点意思,后来根据项目结构想了一下,发现问题出在哪里了

项目是这样的:

这就是父组件所在的页面,点击蓝色按钮新增,会触发回调方法,显示<DialogInfo>子组件
而父组件向子组件传递过来的值arrdata,是在这里通过监听异步获取的

然后渲染在这个列表里:

这里就涉及到组件加载顺序的问题,为什么刚才我在子组件那里获取不到数据呢?因为子组件<DialogInfo>组件加载完毕的时候父组件那里都还没有获取到异步返回的值。

所以为了能获取到值,我们可以在父组件那里判断一下,只有获取到了值,也就是父组件向子组件传递的数组的值的length不为0才渲染:

这样就能保证子组件一定是等父组件准备好数据了,然后再加载,结果:

还有一个解决方法!

就是通过elementui的<el-dialog>组件内置的方法opened或者open执行回调函数,这两个函数会在<el-dialog>组件打开以后执行

我的子组件<dialog-info>就是一个封装的<el-dialog>组件,所以只要等到dialog打开完成了,在回调函数里面就一定可以拿到父组件传过来的值!

子组件中绑定opened方法:

定义回调方法并且返回:

这样我们点击按钮时候,dialog会弹出来

并且在回调方法中我们可以取到值,因为此时早就获得到数据了:

vue爬坑之 父组件向子组件异步传参 子组件中拿不到值的解决方法相关推荐

  1. vue 组件之间传值 父转子,子传父,同级别之间的传参,跨级别传参

    写这篇文章之前,我对vue组件之间的传值,还是只知道一些基础的传值方式.虽然工作中勉强能够应对,但是想要行云流水感觉还是心有余而力不足,所以在此,我想总结一下vue组件之间的一些传值方式供大家参考,同 ...

  2. Vue 爬坑之路(六)—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  3. VUE 爬坑之旅 -- 用 ES6 语法写一个工具类,并全局引用

    在我前面的有一篇文章里有说过怎么引入外部的 JS 文件,详情见 VUE 爬坑之旅– 如何对公共JS,CSS进行统一管理,全局调用 .这里所说的外部 JS 文件指的是用 ES6 之前的老语法编写的各种 ...

  4. Vue 爬坑之路(一)—— 使用 vue-cli 搭建项目

    Vue 爬坑之路(一)-- 使用 vue-cli 搭建项目 vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https: ...

  5. Vue 爬坑之旅 -- 微信网页授权

    现在的 H5 开发,微信授权和微信分享基本是必备功能,昨天将微信分享的相关功能和踩坑过程做了一个总结,今天就来说下微信授权的功能具体到 vue 项目中该要怎么做. Vue 爬坑之旅 – history ...

  6. 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法

    在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...

  7. vue中引用tinymce图标不显示解决方法

    vue中引用tinymce图标不显示解决方法 通过官网查到一篇博客,按照上面步骤可以实现tinymce富文本编辑器的封装和使用. https://www.cnblogs.com/zhongchao66 ...

  8. el-upload 组件在 on-success 文件上传成功的钩子中传递更多参数

    el-upload 组件在 on-success 文件上传成功的钩子中传递更多参数 <el-table-columnlabel="附件"align="center& ...

  9. Vue 子组件修改父组件值的解决方法

    分析 vue中父组件向子组件传值时,其父子prop之间形成单向下行绑定,反过来则不行,这样可以防止子组件意外改变父组件的值,怕子组件污染父组件,造成不可控: 此外,每次父组件的数据发生更新时,子组件的 ...

最新文章

  1. 第十七篇:信息抽取Information Extraction
  2. 需求工程阅读笔记01
  3. 关于UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa6 in position 9737: 的解决
  4. Spring的任务调度和邮件发送
  5. linux测试怎样看,linux入门篇:如何查看centos版本
  6. 简谈C/C++学习路线
  7. 7.MongoDB与python交互
  8. 我希望早几年知道的5个Unix命令
  9. linux-mysql忘记密码解决办法-适用5.76
  10. 欧几里得与扩展欧几里得总结
  11. matlabrobert锐化_基于Matlab的图像锐化的研究
  12. C#datagridView中嵌套控件
  13. Mybatis_day4_Mybatis的注解开发
  14. 无缝衔接的人会遭报应吗_王栎鑫回应新恋情,如何判断你的伴侣会不会无缝衔接...
  15. 大数据、智慧城市与智慧交通 (全集)
  16. 最大子矩阵问题----悬线法
  17. 我用 Python 写了个基金涨跌通知助手
  18. 什么是《现代 JavaScript 教程》?
  19. jzoj 1594: 【USACO】The Chivalrous Cow(骑士牛)( 待加入)
  20. MATLAB生成excel表格

热门文章

  1. 深圳大学——算法设计与分析——金罐游戏
  2. pyspider爬取王者荣耀数据(下)
  3. 阅读方法论看书的乐趣
  4. java抽奖窗口程序_java模拟一个抽奖程序
  5. Spring Boot引用jar包报错:Consider defining a bean of type '***' in your configuration
  6. Ubuntu查看某端口是否开放
  7. 小程序云开发出坑系列(一)
  8. 【DeepLearning】Bags of tricks for Classification深度学习分类提分技巧汇总
  9. mac 同步 linux文件夹在哪里,mac软件文件夹在哪里
  10. 关闭彻底Windows10自动更新工具-Windows Update Blocker