एक प्रतिक्रिया वर्ग पर मैं कुछ इस तरह लिखूंगा

class Myclass extends React.Component {
  handleUpdate = info => {
    //do the update
  }

  render() {
    return (
      <SomeMarkup>
        <SomeComponent onUpdate={this.handleUpdate} />
      </SomeMarkup>
    )
  }
}

यदि किसी फ़ंक्शन का उपयोग कर रहा हूं तो मैं केवल निम्नलिखित लिख सकता हूं:

function MyFunction() {
  function handleUpdate(info) {
    // do the update
  }
  return (
    <SomeMarkup>
      <SomeComponent onUpdate={handleUpdate} />
    </SomeMarkup>
  )
}

लेकिन इसके साथ ही मैं हर रेंडर पर एक फंक्शन को फिर से शुरू करूंगा। क्या कोई ऐसी चाल है जो रेंडरर्स के बीच हैंडलर फ़ंक्शन को याद रखेगी? या क्या मुझे हैंडलर को रेंडर स्कोप से बाहर ले जाना चाहिए? (इसे रेंडर स्कोप से बाहर ले जाने के लिए मुझे स्पष्ट रूप से अधिक पैरामीटर पास करने की आवश्यकता है क्योंकि मेरे पास सीधे फ़ंक्शन स्कोप तक पहुंच नहीं है।)

11
wkrueger 1 मार्च 2019, 01:03

1 उत्तर

सबसे बढ़िया उत्तर

ठीक यही परिदृश्य है जिसके लिए useCallback है। फ़ंक्शन अभी भी useCallback के साथ हर बार घोषित हो जाता है, लेकिन लौटाए गए फ़ंक्शन को याद किया जाता है ताकि अगर इसे बच्चों के लिए एक संपत्ति के रूप में पारित किया जाता है, तो बच्चों को एक सुसंगत फ़ंक्शन प्राप्त होगा जब तक कि निर्भरता बदलने के कारण इसे बदलना न पड़े।

कृपया मेरा हालिया संबंधित उत्तर यहां देखें जो विस्तार से दर्शाता है कि useCallback कैसे काम करता है: React Hooks useCallback के सरल उदाहरण के साथ समस्या

यहां एक और संबंधित उत्तर दिया गया है: -रेंडर

5
Ryan Cogswell 7 मार्च 2019, 21:10