@kirillleogky

Как работает событие обработчик в React?

Есть код:
function Square(props) {
  return (
    <button
      className="square"
      onClick={props.onClick}
    >
      {props.value}
    </button>
  );
}

class Board extends React.Component {
  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(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>
    );
  }
}



Почему в функции Square(props) onClick={props.onClick} написан без скобочки??
так 
onClick={props.onClick}

а не так
onClick={props.onClick()}

Если смотреть по этому то при on обрабочтики её надо вызывать (https://learn.javascript.ru/introduction-browser-e...
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
В фигурных скобочках пишут JavaScript-код. Соответственно, если вы напишите onClick={props.onClick()}, то это будет вызовом функции, а результат этого вызова будет присвоен свойству onClick кнопки. А надо, чтобы это была функция, что достигается строчкой onClick={props.onClick}.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы