フォームの送信時に、デフォルトの投稿動作の代わりにdoSomething()
を試みています。
どうやらReactでは、 onSubmitはフォームでサポートされているイベントです ただし、次のコードを試すと:
var OnSubmitTest = React.createClass({
render: function() {
doSomething = function(){
alert('it works!');
}
return <form onSubmit={doSomething}>
<button>Click me</button>
</form>;
}
});
メソッドdoSomething()
が実行されますが、その後、デフォルトのpost動作が引き続き実行されます。
これは jsfiddle でテストできます。
私の質問:デフォルトの投稿動作を防ぐにはどうすればよいですか?
doSomething()
関数で、イベントe
を渡し、e.preventDefault()
を使用します。
doSomething = function (e) {
alert('it works!');
e.preventDefault();
}
また、イベントハンドラーをレンダリングの外に移動することをお勧めします。
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>
それは私のためにうまくいきます
イベントを関数の引数として渡し、デフォルトの動作を防ぐことができます。
var OnSubmitTest = React.createClass({
render: function() {
doSomething = function(event){
event.preventDefault();
alert('it works!');
}
return <form onSubmit={this.doSomething}>
<button>Click me</button>
</form>;
}
});