如何在 ReactJS 中嵌套 3 个 map 循环函数

How to nest 3 map loop functions in ReactJS

我一直在研究但没有成功。我找到的答案解决了反应中的 2 个嵌套循环(使用地图),并且我已经有 2 个循环在工作。我的问题是我需要其中的 3 个,即使我一直在使用相同的结构,但在第三个上出现错误。

Json 看起来像这样:

    {
  "Table": [
    {
      "Power": "20HP",
      "Count": "5",
      "Vehicles": [
        {
          "Code": "T01-01",
          "Hours": [
            {
              "Hour": "5:00",
              "Status": "1"
            },
            {
              "Hour": "6:00",
              "Status": "2"
            }
          ]
        },
        {
          "Code": "T01-01",
          "Hours": [
            {
              "Hour": "5:00",
              "Status": "1"
            },
            {
              "Hour": "6:00",
              "Status": "2"
            }
          ]
        }
      ]
    }
  ]
}

我有一个名为 table 的对象,它有一个元素数组(不同的车辆功率类型,如 10 hp、20 hp...),每个功率都有一组车辆。最后,每辆车都有一组小时数和状态。 我想要一个 HTML table,第一列是电源,第二列是车辆代码,接下来的 X 列 (24) 是小时数。

我当前的代码只能工作到第二个循环。第三次,我在 VS Code 上得到了一些关于“解析错误:意外标记,预期为”,“”的信息。

我在渲染中的反应代码如下:

{this.state.report.Table.map((d, idx) => (
                  
                    <tr>                          
                      <td style={{border:"1px solid"}} >{d.Power}</td>
                      {d.Vehicles.map((n, idy) => (
                        
                        <td style={{border:"1px solid"}}>{n.Code}</td>

                        ***************                          
                        {n.Hours.map((h, idz) => (
                            <td className={classes.available}></td>
                        ))}
                        ****************

                        ))}
                    </tr>
                ))}

如果我删除 *** 中的代码,它会起作用,但对于第三个循环它不会。 VS Code 的错误提示出现在第三个循环开始时,在“{n.”

提前感谢您的帮助,如果我遗漏了什么或者您需要更多详细信息,请告诉我。我确定我缺少代码规则,正如您从我的问题中想象的那样,我对 React 不流利。

我看到唯一明显缺失的是中间映射需要 return 单个节点。

 {this.state.report.Table.map((d, idx) => (
   <tr key={idx}>                          
     <td style={{border:"1px solid"}} >{d.Power}</td>

     {d.Vehicles.map((n, idy) => (
       <React.Fragment key={indy}> //<-- return single node from map here

         <td style={{border:"1px solid"}}>{n.Code}</td>
         {n.Hours.map((h, idz) => (
           <td key={idz} className={classes.available}></td>
         ))}

       </React.Fragment>
     ))}

   </tr>
 ))}