পরিবর্তনের ইভেন্টটি <select>উপাদানটিতে নয়, <option>উপাদানটিতে ট্রিগার করা হয়েছে । তবে, এটিই কেবল সমস্যা নয়। আপনি যেভাবে changeফাংশনটি সংজ্ঞায়িত করেছেন তাতে উপাদানটির পুনরায় সরবরাহকারীর কারণ হবে না। দেখে মনে হচ্ছে আপনি এখনও প্রতিক্রিয়াটির ধারণাটি পুরোপুরি উপলব্ধি করতে পারেন নি, তাই সম্ভবত "প্রতিক্রিয়াতে চিন্তাভাবনা" সহায়তা করে।
আপনাকে নির্বাচিত মানটিকে রাষ্ট্র হিসাবে সংরক্ষণ করতে হবে এবং মান পরিবর্তিত হলে রাষ্ট্র আপডেট করতে হবে। রাষ্ট্র আপডেট করার ফলে উপাদানটির পুনরায় রেন্ডার ট্রিগার হবে।
var MySelect = React.createClass({
getInitialState: function() {
return {
value: 'select'
}
},
change: function(event){
this.setState({value: event.target.value});
},
render: function(){
return(
<div>
<select id="lang" onChange={this.change} value={this.state.value}>
<option value="select">Select</option>
<option value="Java">Java</option>
<option value="C++">C++</option>
</select>
<p></p>
<p>{this.state.value}</p>
</div>
);
}
});
React.render(<MySelect />, document.body);
এছাড়াও লক্ষ করুন যে <p>উপাদানগুলির কোনও valueবৈশিষ্ট্য নেই। প্রতিক্রিয়া / জেএসএক্স কেবল সুপরিচিত এইচটিএমএল সিনট্যাক্সের প্রতিলিপি তৈরি করে, এটি কাস্টম বৈশিষ্ট্যগুলি প্রবর্তন করে না ( keyএবং ব্যতীত ref)। আপনি যদি নির্বাচিত মানটিকে <p>উপাদানটির বিষয়বস্তু হিসাবে রাখতে চান তবে কেবল এটির ভিতরে রাখুন, যেমন আপনি কোনও স্থিতিশীল সামগ্রী দিয়ে থাকেন।
ইভেন্ট হ্যান্ডলিং, রাষ্ট্র এবং ফর্ম নিয়ন্ত্রণ সম্পর্কে আরও জানুন:
valueসমান না হয়ে আমি কীভাবে অভ্যন্তরীণ পাঠ্য পেতে পারি ?