0

0

如何在 React 中逐条渲染 API 返回的多个数据项

聖光之護

聖光之護

发布时间:2026-01-17 12:55:28

|

308人浏览过

|

来源于php中文网

原创

如何在 React 中逐条渲染 API 返回的多个数据项

本文讲解如何将 api 获取的数组数据逐条传递给子组件并渲染,核心是使用 map 方法遍历数据,在父组件中为每个数据项动态创建子组件实例,并正确传递字段(如 title、description)作为 props。

在 React 中,当从 API(例如 https://dummyjson.com/posts)获取到一个包含多个对象的数组(如 data.posts)时,若希望每个对象独立渲染为一个卡片组件(如 Carts),不能直接将整个数组传给单个组件实例——那样会导致 props 解构失败或渲染逻辑混乱。正确的做法是在父组件中对数据数组执行 .map(),为每一项生成一个独立的 组件,并将当前项(如 data.title、data.body)作为具体属性传入。

首先,修正 ApiRequest 组件:移除将整个数组传给单个 的写法,改用 map 渲染列表:

import React, { useEffect } from 'react';
import { useState } from 'react';
import Carts from './Carts/Carts';

export default function ApiRequest() {
  const [dataApi, setDataApi] = useState([]);

  useEffect(() => {
    const fetchApi = async () => {
      try {
        const response = await fetch('https://dummyjson.com/posts');
        if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
        const data = await response.json();
        setDataApi(data.posts || []);
      } catch (err) {
        console.error('API fetch failed:', err);
      }
    };

    fetchApi();
  }, []);

  return (
    
{dataApi.length > 0 ? ( dataApi.map((post, index) => ( )) ) : (

Loading posts...

)}
); }

接着,同步更新 Carts 组件,使其接收解构后的 title 和 description(而非整个 data 对象),提升可读性与类型安全:

PaperAiBye
PaperAiBye

支持近30多种语言降ai降重,并且支持多种语言免费测句子的ai率,支持英文aigc报告等

下载
import React from 'react';

export default function Carts({ title, description, id }) {
  // 可选:添加基础校验
  if (!title || typeof title !== 'string') {
    console.warn(`Carts received invalid title for id=${id}`);
    return null;
  }

  return (
    
{/* 此处可补充动态图片逻辑,例如 post.coverImage */} @@##@@

{title}

{description}

); }

关键要点总结

  • 必须使用 key 属性:React 要求列表渲染时每个元素有稳定唯一的 key,优先使用 API 返回的 id(如 post.id),避免仅依赖 index(可能导致状态错乱);
  • props 解构要精准:子组件应明确接收所需字段(title, description),而非整个数据对象,便于维护和 TypeScript 类型定义;
  • 增加加载与错误边界:实际项目中建议添加 loading 状态、空数据提示及错误 fallback UI;
  • 注意 API 响应结构:dummyjson.com/posts 返回的是 { posts: [...] },确保取值路径正确(即 data.posts)。

通过以上改造,即可实现“一条 API 数据 → 一个卡片组件”的清晰映射关系,满足逐条展示需求。

{`Post

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

33

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

59

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

37

2025.11.27

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1976

2024.08.16

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

21

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

13

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.7万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

React核心原理新老生命周期精讲
React核心原理新老生命周期精讲

共12课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号