React.js এ সাবস্মিট সেট করা হচ্ছে


97

একটি ফর্ম জমা দেওয়ার সময়, আমি doSomething()ডিফল্ট পোস্ট আচরণের পরিবর্তে চেষ্টা করছি ।

দৃশ্যত প্রতিক্রিয়াতে, অনসামিত ফর্মগুলির জন্য একটি সমর্থিত ইভেন্ট for তবে, যখন আমি নিম্নলিখিত কোডটি চেষ্টা করি:

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

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

পদ্ধতিটি doSomething()চালিত হয় তবে তারপরেও ডিফল্ট পোস্ট আচরণটি এখনও চালিত হয়।

আপনি আমার jsfiddle এ পরীক্ষা করতে পারেন ।

আমার প্রশ্ন: আমি কীভাবে ডিফল্ট পোস্টের আচরণ আটকাব?

উত্তর:


119

আপনার doSomething()ফাংশনে, ইভেন্টটি পাস করুন eএবং ব্যবহার করুন e.preventDefault()।

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

19
V0.13 হিসাবে, ইভেন্ট হ্যান্ডলারদের থেকে মিথ্যা ফিরিয়ে দেওয়া উপেক্ষা করা হবে, সুতরাং আপনাকে e.preventDefault () বা e.stopPropagation () ব্যবহার করতে হবে
— জোশুয়ায়েগ্লার্ক

4
উত্তর হিসাবে, দ্বিতীয়টি পছন্দ করা হয়।
— হেনরিক অ্যান্ডারসন

আমি মনে করি আপনি প্রাক্তনটিকে বোঝাচ্ছেন
— শার্ক লেজারগুলি

@ শার্কলিজার্স এই মন্তব্যটি এই পোস্টের সম্পাদনায় করা হয়েছিল যা আর উপলভ্য নয়।
— হেনরিক অ্যান্ডারসন

যথেষ্ট ভাল, আপনার সম্ভবত মন্তব্যগুলি মুছে ফেলা উচিত যখন তারা আর প্রাসঙ্গিক না হয়।
— শার্ক লেজারগুলি

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>
    );
  }
});

4
উপাদানটিতে ফর্মটি ব্যবহারের এটি সঠিক পদ্ধতি :)
— হোমস

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>;
    }
});

4
আমার ক্ষেত্রে এটি কাজ করে এবং ছাড়াই কাজ করে this: {this.doSomething}বা {doSomething}ঠিক আছে কারণ doSomethingদের সাথে রয়েছে render()।
— স্টারিকভগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.