Настройка onSubmit в React.js

При отправке формы я пытаюсь doSomething() вместо поведения по умолчанию.

По-видимому, в React onSubmit - поддерживаемое событие для форм. Однако, когда я пытаюсь выполнить следующий код:

var OnSubmitTest = React.createClass({
    render: function() {
        doSomething = function(){
           alert('it works!');
        }

        return <form onSubmit={doSomething}>
        <button>Click me</button>
        </form>;
    }
});

Выполняется метод doSomething(), но после этого поведение по умолчанию по-прежнему выполняется.

Вы можете проверить это в моем jsfiddle.

Мой вопрос: как предотвратить поведение сообщения по умолчанию?

Ответ 1

В вашей функции doSomething() перейдите в событие e и используйте e.preventDefault().

doSomething = function (e) {
    alert('it works!');
    e.preventDefault();
}

Ответ 2

Я также предлагаю перемещать обработчик событий вне рендеринга.

var OnSubmitTest = React.createClass({

  submit: function(e){
    e.preventDefault();
    alert('it works!');
  }

  render: function() {
    return (
      <form onSubmit={this.submit}>
        <button>Click me</button>
      </form>
    );
  }
});

Ответ 3

<form onSubmit={(e) => {this.doSomething(); e.preventDefault();}}></form>

он отлично работает для меня

Ответ 4

Вы можете передать событие как аргумент функции, а затем предотвратить поведение по умолчанию.

var OnSubmitTest = React.createClass({
        render: function() {
        doSomething = function(event){
           event.preventDefault();
           alert('it works!');
        }

        return <form onSubmit={this.doSomething}>
        <button>Click me</button>
        </form>;
    }
});