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 相关文章推荐
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
JS实现的数组全排列输出算法
Mar 19 Javascript
百度地图api如何使用
Aug 03 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
浅谈Node.js 子进程与应用场景
Jan 24 Javascript
LayUI表格批量删除方法
Aug 15 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 Javascript
js实现简单的无缝轮播效果
Sep 05 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php的ddos攻击解决方法
2015/01/08 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
浅谈手写node可读流之流动模式
2018/06/01 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python程序运行原理图文解析
2018/02/10 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
Python基础之文件读取的讲解
2019/02/16 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
Python 实现try重新执行
2019/12/21 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
Python实现微信表情包炸群功能
2021/01/28 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
如何正确理解python装饰器
2021/06/15 Python