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


相关推荐

  • c语言createthread函数,C++中CreateThread函数创建线程的用法和实例

    c语言createthread函数,C++中CreateThread函数创建线程的用法和实例CreateThread是一种微软在WindowsAPI中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程。线程终止运行后,线程对象仍然在系统中,必须通过CloseHandle函数来关闭该线程对象。需要调用到CRT库时,不要用CreateThread创建线程、并用CloseHandle来关闭这个线程,而应该用_beginthread来创建线程,_endthread来销毁线程。因为…

    2022年7月21日
    15
  • 白盒测试用例设计方法有哪些_软件测试语句覆盖测试用例

    白盒测试用例设计方法有哪些_软件测试语句覆盖测试用例白盒测试设计方法编写:天林问题:白盒测试方法的概念及应用场景白盒测试方法用各种逻辑覆盖法来和设计白盒测试用例使用基本路径法来设计白盒测试用例内容:白盒测试的基本介绍白盒测试用例设计方法静态设计方法动态设计方法一、白盒测试的概念及特点1、什么是白盒测试代码逻辑的测试白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入考察程序代码的内部结构、逻辑设计等。对于白盒测试工程师来说,软件产品内部构成是透明的。下列代码是

    2022年10月12日
    0
  • 微信浏览器禁止复制文本和图片

    微信浏览器禁止复制文本和图片

    2022年3月13日
    109
  • ES6基础:箭头函数

    ES6基础:箭头函数ES6基础系列(三)箭头函数简要分析一个为什么会有箭头函数,它的意义是什么?

    2022年6月15日
    33
  • springboot讲解(终章怎么解释)

    转载请标明出处:https://blog.csdn.net/forezp/article/details/70341818本文出自方志朋的博客SpringBoot非官方教程|终章:文章汇总springboot非官方教程,可能最接近于官方的一个教程,大多数案例都来自于官方文档,为了更好的理解,加入了个人的改造。码云下载:https://git.oschina…

    2022年4月14日
    45
  • 数据库系列之TiDB存储引擎TiKV实现机制

    数据库系列之TiDB存储引擎TiKV实现机制TiDB存储引擎TiKV是基于RocksDB存储引擎,通过Raft分布式算法保证数据一致性。本文详细介绍了TiKV存储引擎的实现机制和原理,加深对TiDB底层存储架构的理解。

    2022年9月23日
    1

发表回复

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

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