setState()
घटक अवस्था में परिवर्तन करता है और प्रतिक्रिया को बताता है कि इस घटक और उसके बच्चों को अद्यतन स्थिति के साथ फिर से प्रस्तुत करने की आवश्यकता है।
setState पद्धति अतुल्यकालिक है, और तथ्य की बात के रूप में, यह एक वादा वापस नहीं करता है। इसलिए ऐसे मामलों में जहां हम किसी फ़ंक्शन को अपडेट या कॉल करना चाहते हैं, फ़ंक्शन को सेटबैक फ़ंक्शन में कॉलबैक कहा जा सकता है दूसरा तर्क। उदाहरण के लिए, ऊपर दिए गए आपके मामले में, आपने एक फ़ंक्शन को एक सेटस्टैट कॉलबैक कहा है।
setState(
{ name: "Michael" },
() => console.log(this.state)
);
उपरोक्त कोड वर्ग घटक के लिए ठीक काम करता है, लेकिन कार्यात्मक घटक के मामले में, हम सेटस्टेट विधि का उपयोग नहीं कर सकते हैं, और हम उसी परिणाम को प्राप्त करने के लिए उपयोग प्रभाव हुक का उपयोग कर सकते हैं।
स्पष्ट विधि, जो ध्यान में आती है कि यूपीयू उपयोग कर सकता है
const [state, setState] = useState({ name: "Michael" })
useEffect(() => {
console.log(state)
}, [state])
लेकिन यह पहले रेंडर पर भी फायर करेगा, इसलिए हम कोड को निम्न प्रकार से बदल सकते हैं जहां हम पहले रेंडर इवेंट की जांच कर सकते हैं और स्टेट रेंडर से बच सकते हैं। इसलिए कार्यान्वयन निम्नलिखित तरीके से किया जा सकता है:
हम पहले रेंडर की पहचान करने के लिए यहां उपयोगकर्ता हुक का उपयोग कर सकते हैं।
UseRef हुक हमें कार्यात्मक घटकों में उत्परिवर्तनीय चर बनाने की अनुमति देता है। यह डोम नोड्स / रिएक्ट तत्वों तक पहुँचने और पुन: रेंडर करने के लिए बिना परिवर्तनशील चर को स्टोर करने के लिए उपयोगी है।
const [state, setState] = useState({ name: "Michael" });
const firstTimeRender = useRef(true);
useEffect(() => {
if (!firstTimeRender.current) {
console.log(state);
}
}, [state])
useEffect(() => {
firstTimeRender.current = false
}, [])