vue父组件异步获取数据传给子组件的方法


Posted in Javascript onJuly 26, 2018

但是现在问题是父组件的数据是异步获取的,而子组件一开始就会渲染,如果此时没有传入数据,而子组件又要用到数据中的length属性时就会报错:

vue父组件异步获取数据传给子组件的方法

怎么办呢?最简单的办法就是让子组件条件渲染,当有数据的时候才渲染,这样就不会抛出错误了。

vue父组件异步获取数据传给子组件的方法

但是这还不够完美,子组件一般不直接使用父组件传来的值,二是监听一下,然后有变化了的时候再赋值给data,渲染的时候用data里的数据,这样就能保证随时动态更新数据 

props: ['floorGoods'],
data() {
return{
flGoods: {}
}
},
watch: {
floorGoods(val) {
this.flGoods = val;
console.log(val);
}
}

在一个方法就是在父组件里用Promise方法异步执行数据的赋值:

new Promise((resolve,reject) => {
if (res.status === 200){
resolve(res);
}
}).then((res) => {
this.category = res.data.data.category;
this.adBar = res.data.data.advertesPicture.PICTURE_ADDRESS;
this.bannerSwipePics = res.data.data.slides;
this.recommendGoods = res.data.data.recommend;
// 也可异步获取再传给子组件 Promise
this.floorSeafood = res.data.data.floor1;
this.floorBeverage = res.data.data.floor2;
this.floorFruits = res.data.data.floor3;
console.log(this.floorFruits);
this._initScroll();
})
}).catch(err => {
console.log(err);
});

这样也是可以的,异步获取数据导致的报错的情况会在各个场景出现,比如根据数据渲染dom,而对dom有js操作的时候,会因为还没渲染出来而找不到响应的dom元素报错,这里可以用vue提供的$nextTick()函数,或者手动开个setTimeout定时器,延迟获取;使用better-scroll的时候因为dom没有渲染出来而无法获取滚动元素的高度,导致无法滚动,同样可以用vue提供的这个函数,等dom渲染完了后再初始化滚动。

总结

以上所述是小编给大家介绍的vue父组件异步获取数据传给子组件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
20个非常有用的PHP类库 加速php开发
Jan 15 Javascript
ie8模式下click无反应点击option无反应的解决方法
Oct 11 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 Javascript
小程序自定义轮播图圆点组件
Jun 25 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 #Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 #Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 #Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 #Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 #Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 #Javascript
详解ECMAScript typeof用法
Jul 25 #Javascript
You might like
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
jQuery入门知识简介
2010/03/04 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
复制粘贴功能的Python程序
2008/04/04 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python提取网页中超链接的方法
2016/09/18 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
运动会通讯稿50字
2014/01/30 职场文书
升国旗演讲稿
2014/09/05 职场文书
党支部工作总结2015
2015/04/01 职场文书
污染环境建议书
2015/09/14 职场文书
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android
Redis实现分布式锁的五种方法详解
2022/06/14 Redis