在 React.js 中设置 onSubmit

Setting onSubmit in React.js

在提交表单时,我试图 doSomething() 而不是默认的 post 行为。

显然在 React 中,onSubmit is a supported event for forms. 但是,当我尝试以下代码时:

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

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

方法doSomething()是运行,但此后,默认的post行为仍然被执行。

你可以在我的 jsfiddle 中测试这个。

我的问题:如何防止默认的 post 行为?

在您的 doSomething() 函数中,传入事件 e 并使用 e.preventDefault().

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

您可以将事件作为参数传递给函数,然后阻止默认行为。

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

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

我还建议将事件处理程序移到渲染之外。

var OnSubmitTest = React.createClass({

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

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

对我来说很好用