React로 TicTackTo 만들어 State, Props 마스터하기

Heidi·2022년 5월 4일

React

목록 보기
5/8
post-thumbnail
<script type="text/babel">

    class Square extends React.Component{
      render(){
        return(
          <button className="square"
          onClick={ ()=>{ this.props.onClick() }}
          >
          {this.props.value}
          </button>
        )
      }
    }
    
    class Board extends React.Component{

      state = {
        squares : Array(9).fill(null),
        xIsNext : true
      }

      handleClick = (i) => {

        const squares = [...this.state.squares]

        squares[i] = this.state.xIsNext ? 'O' : 'X'

        this.setState({
          squares,
          xIsNext : !this.state.xIsNext
        })

      }

      renderSquare = (i) => {
        return <Square
                onClick = { () => {this.handleClick(i)} }
                value = {this.state.squares[i]}
              />
      }

      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>
        )
      }
    }

    class Game extends React.Component {
      render(){
        return(
          <div>
            <div className="game">
              <div className="game-board">
                <Board />
              </div>
            </div>
          </div>
        )
      }
    }

    ReactDOM.render(<Game />, document.querySelector("#root"));
  </script>

profile
햇님쓰 개발일기장

0개의 댓글