news 2026/6/15 18:55:26

Vue 警告「Expected Object, got Array」?3 步教你把类型对齐,prop 立刻合法!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 警告「Expected Object, got Array」?3 步教你把类型对齐,prop 立刻合法!

Vue 警告「Expected Object, got Array」?3 步教你把类型对齐,prop 立刻合法!

正文目录

  1. 报错含义:Vue 在挑剔什么类型?
  2. 5 大高频翻车场景 & 修复代码
  3. 万能兜底:允许多类型与默认值
  4. 预防 checklist(不再踩坑)
  5. 一句话总结

一、报错含义:Vue 在挑剔什么类型?

当你在控制台看到:

Invalid prop value: expected Object, got Array.

Vue 在告诉你:
「你传给xxx的 prop 是 Array,但组件声明它是 Object。」
本质:prop 类型与传入值不匹配


二、5 大高频翻车场景 & 修复代码

① 父组件传 Array,子组件声明 Object

<!-- 父组件 ❌ --> <MyComp :data="[1, 2, 3]" /> <!-- 子组件 ❌ --> <script setup lang="ts"> defineProps({ data: Object }); // 期望 Object </script>

修复:对齐类型或允许多类型

<!-- ✅ 传对象 --> <MyComp :data="{ list: [1, 2, 3] }" />

或允许多类型:

defineProps({data:[Object,Array]});// ✅ 允许多类型

② 异步数据初始为 Array

<!-- 父组件 ❌ --> <MyComp :data="items" /> <script setup> const items = ref([]); // 初始 Array </script>

修复:初始空对象或允许多类型

constitems=ref({list:[]});// ✅ 初始对象// 或允许多类型defineProps({data:[Object,Array],default:()=>({})});

③ 泛型未约束,返回 Array

// ❌ 泛型未约束,返回 ArrayfunctiongetData<T>():T{return[]asT;// T 被推断为 Array}constdata=getData();// Array

修复:给泛型加约束

functiongetData<TextendsRecord<string,any>>():T{return{}asT;// ✅ 约束为对象}

④ 第三方库返回 Array

// ❌ 库返回 Arrayimport{load}from'lodash';constdata=load('user');// Array

修复:断言或封装

constdata=load('user')asRecord<string,any>;// 或封装functionloadUser():Record<string,any>{returnload('user')asRecord<string,any>;}

⑤ 组件 props 未定义类型

// ❌ props 未定义类型,默认 unknownconstprops=defineProps();props.data;// unknown

修复:给 props 上类型

<script setup lang="ts"> interface Props { data: Record<string, any> } const props = defineProps<Props>(); // ✅ 具体类型 </script>

三、万能兜底:允许多类型与默认值

场景方案示例
多类型数组类型defineProps({ data: [Object, Array] })
默认值default 函数default: () => ({})
运行时校验validatorvalidator: (v) => typeof v === 'object'

四、预防 checklist

  • 所有 prop给具体类型而非unknown
  • 异步数据初始为对象或允许多类型
  • 泛型加约束<T extends Record<string, any>>
  • 第三方库断言或封装
  • 控制台「Expected Object」= 立即对齐类型或允许多类型

五、一句话总结

「Expected Object, got Array」= 传入值与 prop 类型不匹配。
用「具体类型 + 多类型 + 默认值」三件套,让 prop 永远合法,警告瞬间消失!


最后问候亲爱的朋友们,并邀请你们阅读我的全新著作

📚 《Vue.js 3企业级项目开发实战(微课视频版》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 18:04:39

制作阳台种菜攻略工具,输入阳台朝向,光照时长,推荐适合种植的蔬菜,标注种植步骤及施肥周期,记录生长状态,让新手也能种出新鲜菜。

1. 实际应用场景与痛点 场景 - 城市白领、家庭主妇、退休老人想在阳台种菜&#xff0c;但缺乏农业知识。 - 不知道阳台朝向、光照时长对种植的影响。 - 种植步骤、施肥周期记不住&#xff0c;容易失败。 - 无法记录生长状态&#xff0c;错过最佳收获期。 痛点 1. 信息不对称…

作者头像 李华
网站建设 2026/6/15 12:11:07

Python 网络爬虫从入门到实战:手把手教你爬取豆瓣电影排行

在大数据时代&#xff0c;网络爬虫已成为信息采集的核心工具&#xff0c;广泛应用于数据分析、搜索引擎优化等领域。Python 凭借简洁的语法和强大的库支持&#xff0c;成为编写爬虫的首选语言。本文将从基础概念出发&#xff0c;结合 requests 和 beautifulsoup4 库的实战应用&…

作者头像 李华
网站建设 2026/6/15 12:14:24

C# 基于OpenCv的视觉工作流-章18-图像缩放

C# 基于OpenCv的视觉工作流-章18-图像缩放 本章目标&#xff1a; 一、按比例缩放&#xff1b; 二、按尺寸缩放&#xff1b;一、按比例缩放&#xff1b; OpenCv按比例缩放可如下使用&#xff1a; Mat matDst new Mat(); Cv2.Resize(image, matDst, new OpenCvSharp.Size(), wid…

作者头像 李华
网站建设 2026/6/14 15:06:30

【珍藏】深入理解Agent工作流:大模型应用的核心技术详解

文章详细解析了AI Agent及其工作流的概念&#xff0c;介绍了AI Agent的组成要素&#xff08;LLMs、工具、记忆、推理&#xff09;&#xff0c;阐述了Agent工作流的三种核心模式&#xff08;规划、工具使用、反思&#xff09;&#xff0c;并探讨了其在代理RAG、研究助手、编码助…

作者头像 李华
网站建设 2026/6/15 15:15:52

智慧零售场景下的工业物联网解决方案

在无人零售快速渗透的今天&#xff0c;自助售货机作为智慧零售的核心终端&#xff0c;已广泛布局于地铁站、写字楼、商场等多元场景。但随着点位扩张&#xff0c;运营端普遍面临缺货精准度不足、运维成本高、设备稳定性差、数据管理困难等痛点&#xff0c;成为制约行业规模化发…

作者头像 李华
网站建设 2026/6/15 12:22:42

mscoree.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华