JSX преобразуется в React.createElement(...)
вызовы функций. Они возвращают объекты, а не строки, поэтому вы не можете объединить их.
Просто создайте массив элементов:
render() {
const rows = [];
for(var i = 0; i < 9; i+=3)
{
rows.push(
<div key={i} className="board-row">
{this.renderSquare(i)}
{this.renderSquare(i+1)}
{this.renderSquare(i+2)}}
</div>
);
}
return (
<div>
{rows}
</div>
);
}
Подробнее о списках в Реакте.
это дает мне объект является недопустимой дочерней ошибкой React.
В
board = <div>{{board}}{{row}}</div>;
{board}
является кратким обозначением литерала объекта для {board: board}
. То же самое для {row}
. Так что это действительно
board = <div>{{board: board}}{{row: row}}</div>;
Как говорит React, он не знает, как отображать произвольные объекты.
Может быть Вы хотели
board = <div>{board}{row}</div>;
вместо этого (board
и row
- это, в конце концов, элементы React, так что это работает), но это не даст желаемой структуры элемента.