এটি উত্তরসূচক এবং মতামতের মধ্যে এই লাইনটি চলতে পারে তবে জটিলতা বাড়ার সাথে সাথে কীভাবে একটি রিঅ্যাক্টজেএস উপাদান গঠন করা যায় এবং কিছু দিকনির্দেশ ব্যবহার করতে পারে সে সম্পর্কে আমি পিছনে পিছনে যাচ্ছি।
অ্যাঙ্গুলারজেএস থেকে আগত, আমি আমার মডেলটিকে একটি সম্পত্তি হিসাবে উপাদানটিতে পাস করতে চাই এবং উপাদানটি সরাসরি মডেলটি পরিবর্তন করতে চাই। বা stateউজানে প্রেরণ করার সময় আমি কি মডেলটিকে বিভিন্ন বৈশিষ্ট্যে বিভক্ত করে একত্রে আবার সংকলন করব? রিঅ্যাক্টজেএস উপায় কী?
একটি ব্লগ পোস্ট সম্পাদক উদাহরণ নিন। মডেলটি সংশোধন করার চেষ্টাটি সরাসরি দেখতে দেখতে শেষ হয়:
var PostEditor = React.createClass({
updateText: function(e) {
var text = e.target.value;
this.props.post.text = text;
this.forceUpdate();
},
render: function() {
return (
<input value={this.props.post.text} onChange={this.updateText}/>
<button onClick={this.props.post.save}/>Save</button>
);
}
});
যা ভুল বলে মনে হচ্ছে।
আমাদের textমডেল সম্পত্তি তৈরি করার মতো প্রতিক্রিয়ার উপায় কি এবং পছন্দগুলি stateসংরক্ষণের আগে মডেলটিতে এটি আবার সংকলন করুন:
var PostEditor = React.createClass({
getInitialState: function() {
return {
text: ""
};
},
componentWillMount: function() {
this.setState({
text: this.props.post.text
});
},
updateText: function(e) {
this.setState({
text: e.target.value
});
},
savePost: function() {
this.props.post.text = this.state.text;
this.props.post.save();
},
render: function() {
return (
<input value={this.state.text} onChange={this.updateText}/>
<button onClick={this.savePost}/>Save</button>
);
}
});
এর জন্য কল করার প্রয়োজন নেই this.forceUpdate(), তবে মডেলটি বাড়ার সাথে সাথে (কোনও পোস্টে কোনও লেখক, বিষয়, ট্যাগ, মন্তব্য, রেটিং ইত্যাদি থাকতে পারে ...) উপাদানটি জটিল হয়ে উঠতে শুরু করে।
রিঅ্যাক্টলিংক সহ প্রথম পদ্ধতিটি কীভাবে চলবে?

textক্ষেত্রের পরিবর্তে আমাদের কাছে এমন একটিsetTextপদ্ধতি রয়েছে যা বৈধতা এবং কিছু অন্যান্য জিনিস করে। আমি দেখতে পাচ্ছি পদ্ধতি (2)setTextখাঁটি হলে কাজ করা এবং মডেলের একদম নতুন উদাহরণ প্রদান করে। তবে,setTextকেবলমাত্র যদি অভ্যন্তরীণ অবস্থার আপডেট হয় তবে আমাদের এখনও কল করার দরকার আছেforceUpdate, তাই না?