本文详解如何在 react 中对嵌套数据结构(如课程对象内包含科目数组)进行双重遍历,通过外层 `.map()` 渲染课程标题,内层 `.map()` 渲染对应科目列表,并确保 key 唯一性与 html 结构合法性。
在 React 中渲染层级化数据时,常见误区是试图直接访问数组属性(如 course.subjects.class),但 subjects 是一个数组,而非单个对象——因此必须显式遍历它。正确做法是:外层 .map() 处理课程(course)列表,内层 .map() 处理每个课程下的 subjects 数组。
以下是修正后的完整实现:
export const courses = [
{
id: 0,
title: "first year",
subjects: [
{ id: 0, class: "french" },
{ id: 1, class: "history" },
{ id: 2, class: "geometry" }
],
},
{
id: 1,
title: "second year",
subjects: [
{ id: 0, class: "geography" },
{ id: 1, class: "chemistry" }
],
}
];
// ✅
正确:嵌套 map + 合法语义化 HTML 结构
export const studies = courses.map((course) => (
{course.title}
⚠️ 关键注意事项:
总结:React 的列表渲染本质是「数据驱动视图」,每一层集合数据都需独立映射。掌握嵌套 .map() 模式,是处理树形、分组、多维表格等真实业务数据的基础能力。