You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React TSX中无法将API返回的Array传递给其他组件,该如何解决?

问题根因

React 函数组件的入参永远是一个props对象,你通过<ResultTable response={response}/>传递的response是props对象上的一个属性,而非直接作为组件的第一个入参,你的两种写法都存在参数类型/结构匹配错误。

第一种写法的错误

const ResultTable = (response: any[]) => {

该写法将整个props对象赋值给了response变量,你实际拿到的不是你传递的数组,而是包含response属性的props对象,和你标注的any[]类型完全不匹配,因此调用组件时报错。

第二种写法的错误

({response}: any[]) 

你已经正确理解了需要从props对象中解构出response属性,但类型标注错误:你标注的是props对象本身为any[](数组),但props本质是对象,数组类型上不存在response属性,因此TS无法识别该变量。


正确写法

简易写法(适合简单组件)

直接标注props对象的结构即可:

const ResultTable = ({ response }: { response: any[] }) => {
// -----------code------
// ----------code------
}

规范写法(推荐,适合所有场景)

提前定义组件的Props类型,后续维护和类型提示更友好:

// 先定义Props类型
type ResultTableProps = {
  response: any[]
  // 后续新增props属性可以直接在这里扩展
}

const ResultTable = ({ response }: ResultTableProps) => {
// -----------code------
// ----------code------
}

修改完组件定义后,你原来的组件调用代码不需要做任何调整即可正常运行。

拓展建议:如果可以明确response数组内的元素结构,建议把any替换为具体的类型定义,可以最大化利用TS的类型校验能力,减少 runtime 错误。


内容的提问来源于stack exchange,提问作者Shruti sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:24:06