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 相关文章推荐
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
May 22 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 Javascript
JavaScript执行效率与性能提升方案
Dec 21 Javascript
jquery获取当前元素索引值用法实例
Jun 10 Javascript
Javascript 是你的高阶函数(高级应用)
Jun 15 Javascript
Bootstrap 附加导航(Affix)插件实例详解
Jun 01 Javascript
Bootstrap按钮组实例详解
Jul 03 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 Javascript
JS 使用 window对象的print方法实现分页打印功能
May 16 Javascript
使用 node.js 模仿 Apache 小部分功能
Jul 07 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
JS模拟实现京东快递单号查询
Nov 30 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
基于PHP生成简单的验证码
2016/06/01 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
动态创建类实例代码
2009/10/07 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
python实现3D地图可视化
2020/03/25 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
简述数据库的设计过程
2015/06/22 面试题
对标管理实施方案
2014/03/12 职场文书
分层教学实施方案
2014/03/19 职场文书
爱情寄语大全
2014/04/09 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年保送生自荐信
2015/03/24 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书