setState() উপাদানগুলির স্থিতিতে পরিবর্তনগুলি চিহ্নিত করে এবং প্রতিক্রিয়া জানায় যে এই উপাদানটি এবং তার শিশুদের আপডেট হওয়া অবস্থায় পুনরায় রেন্ডার করা দরকার।
সেটস্টেট পদ্ধতিটি অ্যাসিনক্রোনাস এবং বাস্তবে এটি কোনও প্রতিশ্রুতি দেয় না। সুতরাং যে ক্ষেত্রে আমরা কোনও ফাংশন আপডেট করতে বা কল করতে চাই সেখানে ফাংশনটিকে দ্বিতীয় যুক্তি হিসাবে সেটস্টেট ফাংশনে কলব্যাক বলা যেতে পারে। উদাহরণস্বরূপ, উপরের আপনার ক্ষেত্রে আপনি একটি ফাংশনকে সেটস্টেট কলব্যাক হিসাবে ডেকেছেন।
setState(
{ name: "Michael" },
() => console.log(this.state)
);
উপরের কোডটি শ্রেণীর উপাদানগুলির জন্য সূক্ষ্মভাবে কাজ করে, তবে কার্যকরী উপাদানগুলির ক্ষেত্রে আমরা সেটস্টেট পদ্ধতিটি ব্যবহার করতে পারি না এবং এটি একই ফলাফল অর্জনের জন্য আমরা ব্যবহারের প্রভাব হুকটি ব্যবহার করতে পারি।
স্পষ্ট পদ্ধতিটি, যা মাথায় আসে তা হ'ল ypu ব্যবহারের সাথে ব্যবহার করতে পারে প্রভাবটি নীচের মত:
const [state, setState] = useState({ name: "Michael" })
useEffect(() => {
console.log(state)
}, [state])
তবে এটি প্রথম রেন্ডারেও আগুন লাগবে, তাই আমরা কোডটি নীচে পরিবর্তন করতে পারি যেখানে আমরা প্রথম রেন্ডার ইভেন্টটি পরীক্ষা করতে পারি এবং রাষ্ট্রীয় রেন্ডার এড়াতে পারি। সুতরাং বাস্তবায়ন নিম্নলিখিত উপায়ে করা যেতে পারে:
প্রথম রেন্ডার সনাক্ত করতে আমরা এখানে ব্যবহারকারীর হুক ব্যবহার করতে পারি।
ব্যবহারের রেফ হুক আমাদের কার্যকরী উপাদানগুলিতে পারস্পরিক পরিবর্তনশীল ভেরিয়েবল তৈরি করতে দেয়। এটি ডিওএম নোডগুলি / প্রতিক্রিয়া উপাদানগুলিতে অ্যাক্সেস করার জন্য এবং পুনরায় রেন্ডারটি ট্রিগার না করে পারস্পরিক পরিবর্তনশীলগুলি সঞ্চয় করার জন্য দরকারী।
const [state, setState] = useState({ name: "Michael" });
const firstTimeRender = useRef(true);
useEffect(() => {
if (!firstTimeRender.current) {
console.log(state);
}
}, [state])
useEffect(() => {
firstTimeRender.current = false
}, [])