React.js में onSubmit की स्थापना करना


97

एक फॉर्म सबमिट करने पर, मैं doSomething()डिफ़ॉल्ट पोस्ट व्यवहार के बजाय कोशिश कर रहा हूं ।

स्पष्ट रूप से रिएक्ट में, ऑनसुबमिट रूपों के लिए एक समर्थित घटना है। हालाँकि, जब मैं निम्नलिखित कोड आज़माता हूँ:

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

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

विधि doSomething()चलाई जाती है, लेकिन उसके बाद भी, डिफ़ॉल्ट पोस्ट व्यवहार अभी भी किया जाता है।

आप मेरी jsfiddle में यह परीक्षण कर सकते हैं ।

मेरा प्रश्न: मैं डिफ़ॉल्ट पोस्ट व्यवहार को कैसे रोकूं?

जवाबों:


118

अपने doSomething()फ़ंक्शन में, ईवेंट eऔर उपयोग में पास करें e.preventDefault()

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

18
V0.13 के अनुसार, ईवेंट हैंडलर से झूठे रिटर्न को अनदेखा किया जाएगा, इसलिए आपको e.preventDefault () या
e.stopPropagation

1
जैसा कि उत्तर दिया गया है, बाद वाला पसंद किया जाता है।
हेनरिक एंडरसन 19

मुझे लगता है कि आपका मतलब पूर्व में है
शार्क लेजर

@SharkLasers यह टिप्पणी इस पोस्ट के संपादन पर की गई थी जो अब उपलब्ध नहीं है।
हेनरिक एंडरसन

उचित रूप से, आपको टिप्पणियों को संभवतः तब हटाना चाहिए जब वे अब प्रासंगिक नहीं हैं।
शार्क लेजर

46

मैं यह भी सुझाव देना चाहता हूँ कि घटना सौंपनेवाला बाहर सौंपनेवाला।

var OnSubmitTest = React.createClass({

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

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

1
घटक में फॉर्म का उपयोग करने का यह उचित तरीका है :)
Holms

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

यह मेरे लिए ठीक काम करता है


5

आप फ़ंक्शन के तर्क के रूप में ईवेंट को पास कर सकते हैं और फिर डिफ़ॉल्ट व्यवहार को रोक सकते हैं।

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

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

2
मेरे मामले में, यह बिना और के साथ काम करता है this: {this.doSomething}या {doSomething}ठीक है क्योंकि साथ doSomethingहै render()
14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.