Ich versuche Tic-Tac-Toe in Reaktion zu implementieren, um es zu lernen. Ich bin jedoch sehr verwirrt über die Übergabe von Event-Handlern.
Ich versuche, handleClick
zu Square
von Game
bis Board
zu übergeben. Die clickHandler
funktioniert, aber i
und j
bleiben undefiniert.Übergeben von Ereignishandlern als Requisiten in React.
class Game extends Component {
constructor() {
super();
this.state = {squares: Array(3).fill(Array(3).fill(null))};
}
render() {
return(
<div className="game">
<p> STATUS </p>
<Board squares={this.state.squares} handleClick={(i,j) => this.handleClick()}/>
</div>
)
}
handleClick(i,j) {
console.log(i);
console.log(j);
}
}
class Board extends Component {
constructor() {
super();
}
renderSquare(i,j) {
return <Square value={this.props.squares[i][j]} handleClick={ (i,j)=> this.props.handleClick(i,j) }/>;
}
render() {
const board = this.props.squares.map((row,i) =>row.map((j,k)=> this.renderSquare(i,k)));
return(
<div className="board">
{board}
</div>
);
}
}
function Square(props) {
return(
<button className="square" onClick={(i,j) => props.handleClick()}>
</button>
);
}
Nun, natürlich sind sie undefiniert, wenn Sie sie nicht bestehen! – Li357
Die Sache, über die ich am meisten verwirrt bin, ist, dass ich und j, sind tatsächlich in 'renderSquare()' von 'Board' definiert, so dass ich sie zu eventHandler in der Schaltfläche bekommen. –
Du musst i und j im 'handleClick' der' Game' Komponente übergeben ... – Li357