Другой вариант (который я предпочитаю для удобочитаемости) ниже.
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>
);
}