হ্যাঁ আছে, যেহেতু setStateএকটি asynchronousউপায়ে কাজ করে । তার মানে ভেরিয়েবল কল setStateকরার পরে this.stateঅবিলম্বে পরিবর্তন হয় না। সুতরাং আপনি যদি কোনও রাষ্ট্রের পরিবর্তনশীল স্থিতির স্থিতির পরে তত্ক্ষণাত কোনও ক্রিয়া সম্পাদন করতে চান এবং ফলাফলটি ফিরিয়ে দিতে চান, একটি কলব্যাক কার্যকর হবে
নীচের উদাহরণ বিবেচনা করুন
....
changeTitle: function changeTitle (event) {
this.setState({ title: event.target.value });
this.validateTitle();
},
validateTitle: function validateTitle () {
if (this.state.title.length === 0) {
this.setState({ titleError: "Title can't be blank" });
}
},
....
উপরের কোডটি প্রত্যাশার মতো কাজ titleকরতে পারে না কারণ বৈধতাটি বৈধকরণের আগে এটির পরিবর্তিত হতে পারে না। এখন আপনি ভাবতে পারেন যে আমরা render()ফাংশনটিতেই বৈধতাটি সম্পাদন করতে পারি তবে এটি আরও ভাল এবং একটি ক্লিনার উপায় হ'ল যদি আমরা এটি চেঞ্জিটল ফাংশনটিতে নিজে পরিচালনা করতে পারি যেহেতু এটি আপনার কোডকে আরও সুসংহত এবং বোধগম্য করে তুলবে
এই ক্ষেত্রে কলব্যাক দরকারী useful
....
changeTitle: function changeTitle (event) {
this.setState({ title: event.target.value }, function() {
this.validateTitle();
});
},
validateTitle: function validateTitle () {
if (this.state.title.length === 0) {
this.setState({ titleError: "Title can't be blank" });
}
},
....
আর একটি উদাহরণ হ'ল আপনি যখন চান dispatchএবং পদক্ষেপের সাথে সাথে রাষ্ট্র পরিবর্তন হয়। আপনি এটি একটি কলব্যাকে করতে চাইবেন না এবং এটি render()যেমন প্রতিবারের পুনরায় রেন্ডারিং ঘটে তাকে বলা হবে না এবং তাই কলব্যাকের প্রয়োজন এমন অনেকগুলি পরিস্থিতি সম্ভব।
আর একটি মামলা হ'ল ক API Call
একটি কেস উদ্ভূত হতে পারে যখন আপনাকে কোনও নির্দিষ্ট রাষ্ট্রের পরিবর্তনের উপর ভিত্তি করে কোনও এপিআই কল করা দরকার, আপনি যদি রেন্ডার পদ্ধতিতে করেন তবে এটি প্রতিটি রেন্ডার onStateপরিবর্তনের জন্য আহ্বান জানানো হবে বা কিছু প্রোপ Child Componentপরিবর্তিত হয়ে গেছে।
এই ক্ষেত্রে আপনি setState callbackAPI কলটিতে আপডেট হওয়া রাষ্ট্রীয় মানটি পাস করতে একটি ব্যবহার করতে চান
....
changeTitle: function (event) {
this.setState({ title: event.target.value }, () => this.APICallFunction());
},
APICallFunction: function () {
// Call API with the updated value
}
....