我期望从 API 响应中接收一组对象,但在使用 TypeScript 的 React 中获得一组 Promise

Posted

技术标签:

【中文标题】我期望从 API 响应中接收一组对象,但在使用 TypeScript 的 React 中获得一组 Promise【英文标题】:I'm expecting to receive an array of objects from an API response but getting an array of Promises in React with TypeScript 【发布时间】:2022-01-09 00:21:17 【问题描述】:

如果这对你来说是一个愚蠢的问题,我真的很抱歉。我对 TypeScript 和 Promises 有点陌生。我试图在不同的网站上寻找这个解决方案,但找不到任何相关的东西。您能否帮助解决如何接收对象数组而不是承诺。另外,如果您分享一些资源,我可以在其中找到与 React with TypeScript 相关的内容,我将非常感激。提前致谢!

index.ts

    interface IFetchLikes 
      item_id: string;
      likes: number;
    

const fetchLikes = async (): Promise<IFetchLikes[]> => 
    const response = await axios.get<IFetchLikes[]>('https://us-central1-involvement-api.cloudfunctions.net/capstoneApi/apps/PmGqiCAY4CG3PZPHNcEG/likes');
    return response.data;
  ;

  console.log('Response: ', fetchLikes());

【问题讨论】:

【参考方案1】:

您不能在没有承诺的情况下从fetchLikes 返回 IFetchLikes[]。

原因:Promise 用于使异步代码同步运行。它是异步的,因为它必须等待 axios API 返回数据。

有两种方法可以处理此信息。

    在等待之后移动下一个调用函数/可执行代码。 TS example 在前提返回值后使用then运行代码。 TS example

文档:https://www.typescriptlang.org/docs/handbook/react.html

【讨论】:

我怎样才能只得到数据(对象数组)而不是承诺? @vaira 我的错误我已经更新了答案

以上是关于我期望从 API 响应中接收一组对象,但在使用 TypeScript 的 React 中获得一组 Promise的主要内容,如果未能解决你的问题,请参考以下文章

VUE3(setup响应式函数系统API)

使用 AFNetworking 未获得完整的响应标头

如何显示从 API 响应中接收到的图像?

如何使用 System.Text.Json API 将流反序列化为对象

使用 alomafier 请求调用 api 在响应中获取数据,但在请求下方它会变为空白

Node.js 应用程序从 GET 请求到 API 接收到空响应