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 相关文章推荐
鼠标移动到一张图片时变为另一张图片
Dec 05 Javascript
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
JavaScript中的作用域链和闭包
Jun 30 Javascript
用js判断页面是否加载完成实现代码
Dec 11 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
Apr 16 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
Vue非父子组件通信详解
Jun 12 Javascript
highcharts 在angular中的使用示例代码
Sep 20 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
vue框架中props的typescript用法详解
Feb 17 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的静态成员函数效率更高的原因
2014/06/13 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
打包发布Python模块的方法详解
2016/09/18 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
python 6种方法实现单例模式
2020/12/15 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
交通事故协议书
2014/04/15 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
给校长的建议书300字
2014/05/16 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
先进党组织事迹材料
2014/12/26 职场文书
学习保证书100字
2015/02/26 职场文书
2015年工会工作总结
2015/03/30 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL