【发布时间】:2020-02-10 04:21:27
【问题描述】:
我是 react JS 的初学者,正在尝试完成他们在其网站上提供的井字游戏教程,但我很难理解如何通过代码更改状态。
这是游戏使用的 2 个组件的 sn-p:
class Square extends React.Component {
render()
{
return (
<button className="square"
onClick={() => this.props.onClick()}
>
{this.props.value}
</button>
);
}
}
class Board extends React.Component {
constructor(props)
{
super(props);
this.state =
{
squares: Array(9).fill(null),
};
}
handleClick(i)
{
const squares = this.state.squares.slice();
squares[i] = 'X';
this.setState({squares: squares});
}
renderSquare(i)
{
return (
<Square
value={this.state.squares[i]}
onClick={() => this.handleClick(i)}
/>
);
}
render() {
const status = 'Next player: X';
return (
<div>
<div className="status">{status}</div>
<div className="board-row">
{this.renderSquare(0)}
//this.renderSquare is called 7 more times to create the board
- left out to make code here look slightly more concise
</div>
);
}
}
以下是我不明白的地方: 首先调用 renderSquare,传入 0 作为 i 的参数。然后调用 square 组件,传入两个属性 - value 和 onClick。我只是不明白正方形组件中发生了什么。 onClick 被分配了在 renderSquare 的 return 语句中声明的匿名函数,但是如何/何时调用 onClick?我不太确定 onClick() 在这种情况下是如何工作的。
我在这里阅读过关于状态的类似问题,但我不理解给出的解释。任何帮助,将不胜感激。
【问题讨论】:
标签: reactjs react-state-management react-state