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

JSX条件渲染每行8个元素代码编译失败,求原因解析

问题原因与解决方案

编译失败的核心原因

你这段代码的问题出在JSX语法不允许拆分HTML标签。你在条件判断index % 8 === 7里直接输出</div><div class="usage-row">,这相当于单独渲染闭合标签和新的起始标签,但JSX要求每个渲染单元必须是完整合法的元素(比如单个标签、<>包裹的完整内容),这种拆分标签的写法会被解析器判定为无效语法,导致编译失败。

正确实现方式

正确的思路是先把cpu数组按每8个元素一组进行分组,再遍历分组后的数组,每组对应一个usage-row容器,在容器内渲染该组的CPU元素。这样既符合JSX语法,逻辑也更清晰。

步骤1:数组分组

先将原数组拆分成若干个长度为8的子数组:

const groupedCpu = [];
for (let i = 0; i < cpu.length; i += 8) {
  groupedCpu.push(cpu.slice(i, i + 8));
}

步骤2:JSX渲染

用分组后的数组渲染结构:

{groupedCpu.map((row, rowIndex) => (
  <div key={rowIndex} class="usage-row">
    {row.map((item, itemIndex) => (
      <div key={itemIndex} class="cpu">
        <i class={`bi bi-circle-fill ${item.description} led`}></i>
        CPU {item.realname}
      </div>
    ))}
  </div>
))}

额外说明

这种方式还能避免原写法的潜在问题:比如当cpu数组长度不是8的倍数时,原代码会在最后多渲染一个空的usage-rowdiv,而分组渲染不会出现这种情况。

内容的提问来源于stack exchange,提问作者Christian Brinch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:44:53