"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जेएसएक्स प्रॉप्स में एरो फ़ंक्शंस और बाइंड के कारण प्रदर्शन संबंधी समस्याएं क्यों होती हैं?

जेएसएक्स प्रॉप्स में एरो फ़ंक्शंस और बाइंड के कारण प्रदर्शन संबंधी समस्याएं क्यों होती हैं?

2024-11-22 को प्रकाशित
ब्राउज़ करें:271

Why Do Arrow Functions and Bind Cause Performance Issues in JSX Props?

इष्टतम प्रदर्शन के लिए जेएसएक्स प्रॉप्स में एरो फ़ंक्शंस और बाइंड से बचें

रिएक्ट के लिंट टूल का उद्देश्य संभावित मुद्दों को उजागर करके कोड प्रथाओं को बढ़ाना है। एक सामान्य त्रुटि संदेश है "JSX प्रॉप्स को एरो फ़ंक्शंस का उपयोग नहीं करना चाहिए।" यह जेएसएक्स प्रॉप्स के भीतर एरो फ़ंक्शंस या बाइंड का उपयोग करने के हानिकारक प्रभावों को इंगित करता है। प्रदर्शन निहितार्थ:

कचरा संग्रहण:

हर बार एक तीर फ़ंक्शन बनाया जाता है, पिछला वाला हटा दिया जाता है। यदि कई तत्वों को इनलाइन फ़ंक्शंस के साथ प्रस्तुत किया जाता है, तो यह अस्थिर एनिमेशन का कारण बन सकता है। चूंकि एरो फ़ंक्शन प्रोप को हर बार फिर से बनाया जाता है, इसे एक प्रोप परिवर्तन के रूप में पहचाना जाता है, जो एक अनावश्यक रीरेंडर को ट्रिगर करता है।

  • रीरेंडरिंग पर इनलाइन हैंडलर का प्रभाव
  • विचार करें ये उदाहरण:
  • उदाहरण 1: इनलाइन के बिना प्योरकंपोनेंट हैंडलर

क्लास बटन React.PureComponent का विस्तार करता है { प्रदान करना() { const { onClick } = this.props; कंसोल.लॉग('रेंडर बटन'); वापसी क्लिक करेंबटन>; } }इस कोड में, बटन घटक केवल तभी पुन: प्रस्तुत होता है जब इसके प्रॉप्स बदलते हैं, जैसा कि PureComponent के लिए अपेक्षित है।

उदाहरण 2: इनलाइन हैंडलर के साथ PureComponent

const बटन = (प्रॉप्स) => { कंसोल.लॉग('रेंडर बटन'); वापसी props.onClick()}>क्लिक करेंबटन>; };

class Button extends React.PureComponent {
  render() {
    const { onClick } = this.props;
    console.log('render button');
    return ;
  }
}

सर्वोत्तम अभ्यास

इन प्रदर्शन समस्याओं से बचने के लिए, निम्नलिखित सर्वोत्तम प्रथाओं का पालन करने की अनुशंसा की जाती है:

const Button = (props) => {
  console.log('render button');
  return ;
};

जेएसएक्स के बाहर अपने ईवेंट हैंडलर को परिभाषित करें:

एरो फ़ंक्शन निकालें या विधियों को अलग-अलग वेरिएबल में बाइंड करें घोषणाएं।

इस बाइंडिंग का उपयोग करें:

क्लास घटकों के लिए, कंस्ट्रक्टर में ईवेंट हैंडलर को इससे बांधें।

    उच्च-क्रम फ़ंक्शन का उपयोग करें:
  • विचार करें JSX में अधिक कुशल ईवेंट हैंडलिंग के लिए मैप या बाइंडएक्शन क्रिएटर्स जैसे उच्च-क्रम फ़ंक्शन का उपयोग करना।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3