vue常见错误:Invalid prop: type check failed for prop “data“. Expected Array, got Object

vue常见错误:Invalid prop: type check failed for prop “data“. Expected Array, got Object错误截图错误分析这个错误的意思是说:无效的命名数据:“数据”类型检查失败。期望数组,得到对象,那么我们这个时候很明白了,是类型不对,但是是哪一行的呢?打开错误信息下面的详情,这个时候找到后缀是自己页面的.vue文件,看看是哪一行,就知道问题在哪了!下面的是我的:warn @ vue.esm.js?efeb:610assertProp @ vue.esm.js?efeb:1691vali…

大家好,又见面了,我是你们的朋友全栈君。

错误截图

desc-cn

错误分析

这个错误的意思是说:无效的命名数据:“数据”类型检查失败。期望数组,得到对象,那么我们这个时候很明白了,是类型不对,但是是哪一行的呢?打开错误信息下面的详情,这个时候找到后缀是自己页面的.vue文件,看看是哪一行,就知道问题在哪了!下面的是我的:

warn	@	vue.esm.js?efeb:610
assertProp	@	vue.esm.js?efeb:1691
validateProp	@	vue.esm.js?efeb:1618
updateChildComponent	@	vue.esm.js?efeb:2975
prepatch	@	vue.esm.js?efeb:4255
patchVnode	@	vue.esm.js?efeb:6029
updateChildren	@	vue.esm.js?efeb:5914
patchVnode	@	vue.esm.js?efeb:6040
updateChildren	@	vue.esm.js?efeb:5914
patchVnode	@	vue.esm.js?efeb:6040
updateChildren	@	vue.esm.js?efeb:5914
patchVnode	@	vue.esm.js?efeb:6040
updateChildren	@	vue.esm.js?efeb:5914
patchVnode	@	vue.esm.js?efeb:6040
patch	@	vue.esm.js?efeb:6203
Vue._update	@	vue.esm.js?efeb:2790
updateComponent	@	vue.esm.js?efeb:2908
get	@	vue.esm.js?efeb:3278
run	@	vue.esm.js?efeb:3353
flushSchedulerQueue	@	vue.esm.js?efeb:3109
(anonymous)	@	vue.esm.js?efeb:1938
flushCallbacks	@	vue.esm.js?efeb:1857
Promise.then (async)		
microTimerFunc	@	vue.esm.js?efeb:1905
nextTick	@	vue.esm.js?efeb:1951
queueWatcher	@	vue.esm.js?efeb:3201
update	@	vue.esm.js?efeb:3343
notify	@	vue.esm.js?efeb:721
reactiveSetter	@	vue.esm.js?efeb:1046
proxySetter	@	vue.esm.js?efeb:3430
(anonymous)	@	main.vue?512e:426
Promise.then (async)		
(anonymous)	@	main.vue?512e:408

看倒数第三行,是我的文件,那么我的错误是在426行,看一下我的426行代码是什么:

that.common_table_info = res.data.data.room_type_price;

这是我的426行代码,那么其实这个时候问题就很明显了,说明我前面的是一个数组,后面的是一个对象,那么common_table_info是我绑定的一个表格的数据,element:data=‘common_table_info’,他希望拿到的是一个数组,但是我给了他一个对象,数据是渲染上去了,但是其实是报错的。下面的是res.data.data.room_type_price返回的结果,很明显是一个对象。

{ 
   
    "message": "success",
    "data": { 
   
        "room_type_price": { 
   
            "FYDCF": { 
   
                "room_type": "风雅大床房",
                "2019-05-16": "35/221",
                "2019-05-17": "39/221",
                "2019-05-18": "39/221",
                "2019-05-19": "39/221",
                "2019-05-20": "39/221",
                "2019-05-21": "39/221",
                "2019-05-22": "39/221"
            },
            "FYSCF": { 
   
                "room_type": "风雅双床房",
                "2019-05-16": "36/239",
                "2019-05-17": "39/239",
                "2019-05-18": "39/239",
                "2019-05-19": "39/239",
                "2019-05-20": "39/239",
                "2019-05-21": "39/239",
                "2019-05-22": "39/239"
            },
            "FYTF": { 
   
                "room_type": "家庭套房",
                "2019-05-16": "0/359",
                "2019-05-17": "0/359",
                "2019-05-18": "0/359",
                "2019-05-19": "0/359",
                "2019-05-20": "0/359",
                "2019-05-21": "0/359",
                "2019-05-22": "0/359"
            }
        }
    },
    "new_authorization": "af3e405073cb44baaf6e5508019c9a3b"
}
问题解决

既然找到了原因,解决就很简单了,直接将对象转为数组就好了!

let common_table_info = [];
              /** * 这里需要将拿到的对象转为数组,进行赋值,这样才不会宝类型错误 */
              for(let i in res.data.data.room_type_price){ 
   
                common_table_info.push(res.data.data.room_type_price[i]);
              }
              that.common_table_info = common_table_info;

到这里就解决了,很多的问题都是我们的大意造成的,其实只要写代码认真一些,这些问题应该都不会出现。

喜欢的可以关注,一起学习!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131701.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java开发常用工具

    java开发常用工具

    2021年7月10日
    85
  • 您不具有该 Vuser 类型的许可证. 请与 HP Software 联系以更新许可证.

    您不具有该 Vuser 类型的许可证. 请与 HP Software 联系以更新许可证.

    2021年7月17日
    62
  • Java链表——遍历、查找、求链表长度

    Java链表——遍历、查找、求链表长度1.遍历非常简单的一段代码,只需要在节点不为空时,一个接一个地输出即可。publicvoidErgodic(){ ListNodeindexNode=head; while(indexNode.getNext()!=null){ System.out.print(indexNode.getVal()+””); indexNode=indexNode.getNext(); } }2.查找我们来做一个对值的查找…

    2022年5月13日
    62
  • Object数组转String数组

    Object数组转String数组1、System.arraycopy把一个数组中某一段字节数据放到另一个数组中//src:源数组;srcPos:源数组要复制的起始位置;dest:目的数组;destPos:目的数组放置的起始位置;length:复制的长度.publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)Object[]src={“A”,”B”,”C”};String[]dest=

    2022年5月4日
    40
  • s3c2440中断体系

    s3c2440中断体系intmain(){while(1);return0;}

    2022年5月1日
    62
  • ERP和MES、QAS以及APS在制造企业信息化的了解

    ERP和MES、QAS以及APS在制造企业信息化的了解ERP系统企业ERP系统标准的定义来自其英文原意,即企业资源规划(EnterpiseResourcePlanning)。企业ERP系统是一个对企业资源进行有效共享与利用的系统,通过信息系统对信息进行充分整理、有效传递、使企业的资源在购、存、产、销、人、财、物等各个方面能够得到合理地配置与利用,从而实现企业经营效率地提高。从本质上讲,企业ERP系统时一套信息系统,是一种工具。系统设计中可集成某些管理思想与内容,可帮助企业提升管理水平。另外一种说法认为企业ERP系统是将企业所有资源进行整合集成管理,简单

    2022年6月28日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号