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 相关文章推荐
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
JavaScript入门教程(12) js对象化编程
Jan 31 Javascript
几个javascript操作word的参考代码
Oct 26 Javascript
javascript时间函数基础介绍
Mar 28 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
简单选项卡 js和jquery制作方法分享
Feb 26 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
基于vue-element组件实现音乐播放器功能
May 06 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
npm 常用命令详解(小结)
Jan 17 Javascript
js中Generator函数的深入讲解
Apr 07 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
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
一段利用WSH获取登录时间的jscript代码
2008/05/11 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
详解node中创建服务进程
2017/05/09 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
JS实现随机点名器
2020/04/12 Javascript
python编程开发之类型转换convert实例分析
2015/11/13 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
Python 实现一个计时器
2020/07/28 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
工商技校毕业生自荐信
2013/11/15 职场文书
质量工程师岗位职责
2013/11/16 职场文书
成品仓管员工作职责
2013/12/29 职场文书
《乞巧》教学反思
2014/02/27 职场文书
抵押贷款承诺书
2014/05/30 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
结婚主持人致辞
2015/07/28 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
使用CSS实现百叶窗效果示例代码
2023/05/07 HTML / CSS