কোনও উপাদানটিতে কাউন্টার বাড়ানোর কল্পনা করুন:
class SomeComponent extends Component{
state = {
updatedByDiv: '',
updatedByBtn: '',
counter: 0
}
divCountHandler = () => {
this.setState({
updatedByDiv: 'Div',
counter: this.state.counter + 1
});
console.log('divCountHandler executed');
}
btnCountHandler = () => {
this.setState({
updatedByBtn: 'Button',
counter: this.state.counter + 1
});
console.log('btnCountHandler executed');
}
...
...
render(){
return (
...
// a parent div
<div onClick={this.divCountHandler}>
// a child button
<button onClick={this.btnCountHandler}>Increment Count</button>
</div>
...
)
}
}
পিতামাতা এবং সন্তানের উভয় উপাদানগুলির সাথে একটি গণনা হ্যান্ডলার সংযুক্ত রয়েছে। এটি উদ্দেশ্যমূলকভাবে সম্পন্ন করা হয়েছে যাতে আমরা একই ক্লিক ইভেন্ট বুদবুদ প্রসঙ্গে দুটি বার সেটস্টেট () সম্পাদন করতে পারি তবে 2 টি ভিন্ন হ্যান্ডলারের মধ্যে থেকে।
যেমনটি আমরা কল্পনা করব, বোতামের একক ক্লিক ইভেন্টটি এখন উভয় হ্যান্ডলারগুলিকে ট্রিগার করবে যেহেতু বুদবুদ পর্যায়ের সময় ইভেন্টটি বুদবুদ থেকে লক্ষ্য থেকে বাহ্যতম ধারক পর্যন্ত যায়।
অতএব বিটিএনকাউন্টহ্যান্ডলার () প্রথমে মৃত্যুদন্ড কার্যকর করে, গণনাটি 1-তে বাড়িয়ে প্রত্যাশিত এবং ডিভোকাউন্টহ্যান্ডলার () মৃত্যুদন্ড কার্যকর করে, গণনাটি 2-তে বাড়িয়ে তুলবে বলে আশা করা হচ্ছে।
তবে প্রতিক্রিয়া বিকাশকারী সরঞ্জামগুলিতে পরিদর্শন করতে পারেন বলে গণনাটি কেবলমাত্র 1 এ বৃদ্ধি পেয়েছে।
এটি প্রমাণ করে যে প্রতিক্রিয়া জানায়
সমস্ত সেটস্টেট কলগুলি সারি করে
প্রসঙ্গে শেষ পদ্ধতিটি কার্যকর করার পরে এই কাতারে ফিরে আসে (এই ক্ষেত্রে ডিভাউন্টহ্যান্ডলার)
একযোগে একাধিক সেটস্টেট কলগুলির মধ্যে ঘটে যাওয়া সমস্ত অবজেক্ট মিউটেশনগুলি একই প্রসঙ্গে একত্রিত করে (একক ইভেন্ট পর্বের মধ্যে সমস্ত পদ্ধতি কল যেমন একই প্রসঙ্গে) একীভূত রূপান্তর সিনট্যাক্সে মার্জ হয়ে যায় (মার্জ করা অর্থপূর্ণ কারণ এটিই আমরা রাষ্ট্রের বৈশিষ্ট্যগুলি স্বাধীনভাবে আপডেট করতে পারি সেটস্টেটে () প্রথম স্থানে)
এবং একাধিক সেটস্টেট () কলগুলির কারণে এটি পুনরায় রেন্ডারিং রোধ করতে এটি একটি একক সেটস্টেট () এ পাস করে (এটি ব্যাচিংয়ের খুব আদিম বর্ণনা)।
প্রতিক্রিয়াশীল কোড দ্বারা চালিত প্রতিক্রিয়া:
this.setState({
updatedByDiv: 'Div',
updatedByBtn: 'Button',
counter: this.state.counter + 1
})
এই আচরণটি থামাতে, সেটস্টেট পদ্ধতিতে যুক্তি হিসাবে বস্তুগুলি পাস করার পরিবর্তে কলব্যাকগুলি পাস করা হয়।
divCountHandler = () => {
this.setState((prevState, props) => {
return {
updatedByDiv: 'Div',
counter: prevState.counter + 1
};
});
console.log('divCountHandler executed');
}
btnCountHandler = () => {
this.setState((prevState, props) => {
return {
updatedByBtn: 'Button',
counter: prevState.counter + 1
};
});
console.log('btnCountHandler executed');
}
শেষ পদ্ধতিটি সম্পাদন শেষ করার পরে এবং সেটস্টেট সারিটি প্রক্রিয়া করার জন্য যখন প্রতিক্রিয়া দেখায়, কেবল পূর্ববর্তী উপাদান অবস্থায় প্রবাহিত প্রতিটি সেটস্টেটের সারি জন্য কলব্যাকটি কেবল কল করে।
এইভাবে প্রতিক্রিয়াটি নিশ্চিত করে যে সারিতে থাকা সর্বশেষ কলব্যাকটি তার পূর্ববর্তী সমস্ত অংশীদারদের হাত ধরে রেখেছে রাষ্ট্রটি আপডেট করতে পারে।