【发布时间】:2019-01-13 21:54:27
【问题描述】:
我是 Javascript 和 React 新手,有一个与 this one 类似的问题:
我正在学习井字游戏game 的教程,并试图了解 JSX 与循环和数组的混合。
我有这个正在工作:
class Board extends React.Component {
renderSquare(i) {
return (
<Square
value={this.props.squares[i]}
onClick={() => this.props.onClick(i)}
/>
)
}
renderRow(row) {
let ss = [];
for(let i=0; i<3; i++)
{
ss.push(this.renderSquare(i+row));
}
return (
<div className="board-row">
{ss}
</div>
)
}
renderBoard() {
let board = []
for(let i=0; i<3; i++)
{
board.push(this.renderRow(i*3));
}
return board;
}
render() {
return (
<div>
{this.renderBoard()}
</div>
)
}
}
基本上这个想法是替换用这个完成的硬编码板:
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>
);
}
我想做的是在某种嵌套的 for 循环结构中有效地将 renderRow 和 renderBoard 组合在一起。我只有不同的功能,因为我不知道如何将元素的嵌套结构内联到我正在制作的数组中。这可能吗?
【问题讨论】:
-
在这个特定的示例中,我不会尝试将其强制为一些花哨的
for循环。for循环也不能很好地与 jsx 配合使用,而且大多数时候我发现它们很难阅读。我尽量避免它们。实际上,几个月来,在一个中型项目中整天创建 React 组件时,我什至没有使用过一次。我尽可能使用map()(在 99% 的情况下)。
标签: javascript reactjs