Al enviar un formulario, intento hacer doSomething() en lugar del comportamiento de publicación predeterminado.
Aparentemente en React, onSubmit es un evento compatible con formularios. Sin embargo, cuando intento el siguiente código:
var OnSubmitTest = React.createClass({ render: function() { doSomething = function(){ alert('it works!'); } return <form onSubmit={doSomething}> <button>Click me</button> </form>; } }); Se ejecuta el método doSomething() , pero a partir de entonces, el comportamiento de publicación predeterminado aún se lleva a cabo.
Puedes probar esto en mi jsfiddle .
Mi pregunta: ¿Cómo evito el comportamiento de publicación predeterminado?
En su función doSomething() , pase el evento e y use e.preventDefault() .
doSomething = function (e) { alert('it works!'); e.preventDefault(); }También sugeriría mover el controlador de eventos fuera del renderizado.
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>funciona bien para mi