试图对我做类似事情的答案: https ://stackoverflow.com/a/45785715/8126531
嗨,我在这里做 ReactJS 教程,我基本上处于它要求替换的部分:
render() {
return (
<div>
<div className="board-row">
{this.renderSquare(0)}
{this.renderSquare(1)}
{this.renderSquare(2)}
</div>
<div className="board-row">
{this.renderSquare(3)}
{this.renderSquare(4)}
{this.renderSquare(5)}
</div>
<div className="board-row">
{this.renderSquare(6)}
{this.renderSquare(7)}
{this.renderSquare(8)}
</div>
</div>
);
}
}
用 2 个循环来制作正方形,而不是对其进行硬编码。
从概念上讲,我不知道我是否弄错了,但是我一直在尝试将所有元素推入一个数组,然后将其呈现如下:
render() {
return (
<div>{ this.createBoard(3, 3) }</div>
);
}
createBoard(rows, columns) {
let htmlBlock = [];
for (let i = 0; i < columns; i++) {
htmlBlock.push(<div className="board-row">);
for (let j = 0; j < rows; j++) {
htmlBlock.push(this.renderSquare(j));
}
htmlBlock.push(</div>);
}
return htmlBlock;
}
但我在控制台中收到一个错误,说“行”后面的分号是一个意外的标记。如果我将元素作为字符串推送到 htmlBlock,那么输出正是我想要的,除了在控制台中它是文字字符串而不是 HTML。
有人能告诉我为什么我有这个错误,或者我在概念上是否有错误,我应该以不同的方式来做吗?
干杯。
顺便说一句,不确定它是否相关,但我正在使用 webpack 并且 jsx 文件正在被转译和捆绑。
[已解决]:感谢大家的回复。感谢用户“emma”,我设法让它工作。我认为问题在于您不能将“不完整”的 html 块推送到数组并对其进行渲染。以下是我所做的更改:
createBoard(rows, columns) {
let htmlBlock = [];
for (let i = 0; i < columns; i++) {
// htmlBlock.push(<div className="board-row">);
let test = [];
for (let j = 0; j < rows; j++) {
test.push(this.renderSquare(j));
}
htmlBlock.push(<div> { test }</div>);
}
return htmlBlock;
}
再次感谢各位!!