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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • (转)[IDEA]如何安装codelf[通俗易懂]

    (转)[IDEA]如何安装codelf[通俗易懂]stormgolandpycharmwebstormIntelliJidea等)安装步骤直接浏览器访问http://unbug.github.io/codelf/JetBrainsIDE插件安装插件安装onlinesearch配置onlinesearch添加codelf搜索onlinesearch设置快捷键

    2022年5月4日
  • CSS3 opacity 属性

    CSS3 opacity 属性设置div元素的不透明级别1、属性opacity属性指定了一个元素的透明度。换言之,opacity属性指定了一个元素后面的背景的被覆盖程度。当opacity属性的值应用于某个元素上时,是把这个元素(包括它的内容)当成一个整体看待,即使这个值没有被子元素继承。因此,一个元素和它包含的子元素都会具有和元素背景相同的透明度,哪怕这个元素和它的子元素有不同的opacity属性值。2、语法op…

    2022年5月9日
  • JavaScript中splice方法的使用「建议收藏」

    JavaScript中splice方法的使用「建议收藏」JavaScript中splice方法的使用splice的基本用法删除操作插入操作替换操作splice一次性删除多个元素splice的基本用法在JavaScript中,arrObject.splice()方法是处理数组的利器,利用它可以实现在指定位置删除、替换、插入指定数量的元素。其语法为:arrayObject.splice(index,howmany,item1,…,itemX)含义为从index开始,删除howmanry个元素,并在原地插入item1,…,itemN,最后返回被删除的数组

    2022年9月13日
  • ubuntu 20.04 安装中文输入法_如何在ubuntu中安装中文输入法

    ubuntu 20.04 安装中文输入法_如何在ubuntu中安装中文输入法在Ubuntu系统中,无论是写文档还是在程序中写注释,都经常需要用到中文输入法。本文简单介绍了三种输入法框架,然后详细介绍了在Ubuntu20.04系统中,IBus框架和Fcitx框架支持的中文输入法的配置和安装。……

    2022年9月26日
  • 一步一步写算法(检查表)

    一步一步写算法(检查表)

    2021年12月30日
  • java logbook_SpringBoot使用Logbook记录HTTP请求响应日志

    java logbook_SpringBoot使用Logbook记录HTTP请求响应日志SpringBoot的httptrace端口能够记录每次访问的请求和响应信息,但是不能记录body,这样在出问题时就不方便排查,而且httptrace不方便在原有的基础上进行扩展,所以只能寻求其他方式进行记录。Logbook是一个可扩展的Java库,可以为不同的客户端和服务端技术提供完整的请求和响应日志记录。它能够满足一些特殊的需求:允许web应用记录程序接收或发送的所有HTTP通信易于保留和进…

    2022年10月23日

发表回复

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

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