为了账号安全,请及时绑定邮箱和手机立即绑定

如何每 3 次将一些 HTML 推送到数组以进行输出

如何每 3 次将一些 HTML 推送到数组以进行输出

扬帆大鱼 2021-06-29 09:11:08
我想在 for 循环中每 3 次输出 div。输出呈现的不是 HTML。我该如何解决这个问题?render() {    const squareItems = [];    for (var i=0; i < 9; i++) {        if ((i % 3) == 0){            squareItems.push('<div class="row">');        }        squareItems.push(this.renderSquare(i));        if ((i % 3) == 2){            squareItems.push('</div>');        }    }    return (      <div>        { squareItems }      </div>    );  }我需要结果:我尝试使用 JSX 进行推送,但无论如何它都需要关闭任何标签。<div class="row"> <div>1</div> <div>2</div> <div>3</div></div><div class="row"> <div>4</div> <div>5</div> <div>6</div></div><div class="row"> <div>7</div> <div>8</div> <div>9</div></div>
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

下面是另一个选项(我更喜欢可读性)。


render() {

  return (

    <div>

      {Array(3).fill().map((_, index) => (

        <div class="row">

          {this.renderSquare(index * 3)}

          {this.renderSquare(index * 3 + 1)}

          {this.renderSquare(index * 3 + 2)}

        </div>

      ))}

    </div>

  );

}

如果您希望行数/方块数是动态的,您可以使用以下内容:


render() {

  const rowCount = 3;

  const squaresPerRow = 3;


  return (

    <div>

      {Array(rowCount).fill().map((_, rowIndex) => (

        <div class="row">

          {Array(squaresPerRow).fill().map((_, squareIndex) => (

            this.renderSquare(rowIndex * squaresPerRow + squareIndex)

          ))}

        </div>

      ))}

    </div>

  );

}


查看完整回答
反对 回复 2021-07-01
?
跃然一笑

TA贡献1826条经验 获得超6个赞

我认为嵌套循环是最简单的解决方案:


render() {

    const squareItems = [];


    for (var i=0; i < 3; i++) {

        squareItems.push(<div class="row">

            {Array(3).map((_, j) => this.renderSquare(i * 3 + j))}

        </div>);

    }


    return (

      <div>

        { squareItems }

      </div>

    );

  }


查看完整回答
反对 回复 2021-07-01
  • 2 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信