दिलचस्प पोस्ट
जावास्क्रिप्ट डिजाइन पैटर्न: मॉड्यूल पैटर्न और खुलासा मॉड्यूल पैटर्न के बीच अंतर? एंड्रॉइड एक्सीलरोमीटर सटीकता (जड़ता नेविगेशन) जैसे और बीच में पोस्टग्रेज़ में अंतर LINQ – क्वेरी वाक्यविन्यास बनाम विधि श्रृंखला और लैम्ब्डा डाक अनुरोध कैसे भेजें? लिनक्स पर एक सेवा के रूप में जावा अनुप्रयोग चलाएं बूटस्ट्रैप 3 नई स्लाइड के लिए स्लाइड करने के बजाय नई स्लाइड में लुप्त होती हिंडोझल लैम्ब्डा अभिव्यक्ति में विदेशी लैप के इटरेटर वेरिएबल का उपयोग करना – क्यों विफल रहता है? `प्रदर्शन: तालिका-सेल` की चौड़ाई कैसे गणना की जाती है? विभिन्न .NET फ्रेमवर्क संस्करणों के लिए ओएस संगतता mysql संग्रहीत कार्यविधि जो स्वयं को फिर से कॉल करती है कैसे AWK का उपयोग कर दो फ़ाइलों को मर्ज करने के लिए? Std :: cout का उपयोग कर तर्कों के मूल्यांकन के आदेश जावास्क्रिप्ट का उपयोग करते हुए सीएसएस संक्रमण का पता लगा (और बिना आधुनिकता)? C ++ 0x के लैम्ब्डा को कैप्चर-बाय-वैल्यू के लिए डिफ़ॉल्ट रूप से "अस्थिर" कीवर्ड क्यों मिलता है?

कक्षा पद्धतियों के रूप में एरो फ़ंक्शंस (सार्वजनिक वर्ग फ़ील्ड) का उपयोग कैसे करें?

मैं प्रतिक्रिया के साथ ES6 वर्गों का उपयोग करने के लिए नया हूँ, पहले से मैं अपने तरीकों को वर्तमान वस्तु (प्रथम उदाहरण में दिखा) में बाध्य कर रहा हूं, लेकिन क्या ES6 मुझे स्थायी रूप से वर्ग समारोह को तीर के साथ बाध्य करने की अनुमति देता है? (एक कॉलबैक फ़ंक्शन के रूप में जाने के दौरान उपयोगी।) जब मैं उनको उपयोग करने की कोशिश करता हूं तो मुझे त्रुटियाँ मिलती हैं जैसे आप कॉफी स्क्रिप्ट के साथ कर सकते हैं:

class SomeClass extends React.Component { // Instead of this constructor(){ this.handleInputChange = this.handleInputChange.bind(this) } // Can I somehow do this? Am i just getting the syntax wrong? handleInputChange (val) => { console.log('selectionMade: ', val); } 

इसलिए कि अगर मैं SomeClass.handleInputChange पास करने के लिए, उदाहरण के लिए setTimeout , यह क्लास उदाहरण के लिए scoped किया जाएगा, और window वस्तु नहीं

वेब के समाधान से एकत्रित समाधान "कक्षा पद्धतियों के रूप में एरो फ़ंक्शंस (सार्वजनिक वर्ग फ़ील्ड) का उपयोग कैसे करें?"

आपकी वाक्यविन्यास थोड़ी दूर है, संपत्ति नाम के बाद बस एक बराबर चिह्न गुम है।

 class SomeClass extends React.Component { handleInputChange = (val) => { console.log('selectionMade: ', val); } } 

यह एक प्रायोगिक विशेषता है इसे संकलित करने के लिए आपको Babel में प्रयोगात्मक सुविधाओं को सक्षम करना होगा। यहां प्रयोगात्मक सक्षम वाला एक डेमो है

बैबेल में प्रायोगिक सुविधाओं का उपयोग करने के लिए आप यहां से संबंधित प्लग-इन स्थापित कर सकते हैं । इस विशिष्ट सुविधा के लिए, आपको transform-class-properties प्लगइन की आवश्यकता है :

 { "plugins": [ "transform-class-properties" ] } 

आप क्लास फील्ड और स्टेटिक प्रॉपर्टीज के लिए प्रस्ताव के बारे में अधिक पढ़ सकते हैं


नहीं, यदि आप बाध्य करना चाहते हैं, तो उदाहरण-विशिष्ट विधियां जिन्हें आपको कन्स्ट्रक्टर में करना होगा। हालांकि, आप इसके लिए तीर फ़ंक्शंस का उपयोग कर सकते हैं, एक प्रोटोटाइप विधि पर .bind का उपयोग करने के बजाय:

 class SomeClass extends React.Component { constructor() { super(); this.handleInputChange = (val) => { console.log('selectionMade: ', val, this); }; … } } 

एक ऐसा प्रस्ताव है जो आपको constructor() को छोड़ने और असाइनमेंट को समान कार्यक्षमता के साथ क्लास स्कोप में डाल सकता है, लेकिन मैं इसे प्रयोग करने की अनुशंसा नहीं करता क्योंकि यह अत्यधिक प्रयोगात्मक है।

वैकल्पिक रूप से, आप हमेशा .bind उपयोग कर सकते हैं, जो आपको प्रोटोटाइप पर विधि घोषित करने की अनुमति देता है और फिर इसे कन्स्ट्रक्टर में उदाहरण के साथ बाँध सकता है। इस दृष्टिकोण में अधिक लचीलापन है क्योंकि यह आपके क्लास के बाहर से विधि को संशोधित करने की अनुमति देता है।

 class SomeClass extends React.Component { constructor() { super(); this.handleInputChange = this.handleInputChange.bind(this); … } handleInputChange(val) { console.log('selectionMade: ', val, this); } } 

मुझे पता है कि इस प्रश्न का पर्याप्त उत्तर दिया गया है, लेकिन मेरे पास एक छोटे से योगदान करने के लिए है (जो प्रयोगात्मक सुविधा का उपयोग नहीं करना चाहते हैं) कन्स्ट्रक्टर में एकाधिक फ़ंक्शन बाइंड करने की समस्या की वजह से और यह गन्दा दिखता है, मैं एक उपयोगिता विधि के साथ आया हूं जो एक बार बाध्य और कन्स्ट्रक्टर में बुलाया जाता है, आपके लिए सभी आवश्यक विधि बाइंडिंग स्वचालित रूप से करता है

मान लें कि मुझे इस वर्ग को निर्माता के साथ है:

 //src/components/PetEditor.jsx import React from 'react'; class PetEditor extends React.Component { constructor(props){ super(props); this.state = props.currentPet || {tags:[], photoUrls: []}; this.tagInput = null; this.htmlNode = null; this.removeTag = this.removeTag.bind(this); this.handleChange = this.handleChange.bind(this); this.modifyState = this.modifyState.bind(this); this.handleKeyUp = this.handleKeyUp.bind(this); this.addTag = this.addTag.bind(this); this.removeTag = this.removeTag.bind(this); this.savePet = this.savePet.bind(this); this.addPhotoInput = this.addPhotoInput.bind(this); this.handleSelect = this.handleSelect.bind(this); } ...//actual method declarations omitted } 

सवाल सभी तैयार हो गए हैं लेकिन मैं यहां ES6 तीर पद्धति का उपयोग करने के लिए कुछ उपयोग मामलों को जोड़ूंगा।

कॉलबैक विधियों के अंदर:

 let arr = [1,2]; let arr1 = arr.map((val,index) => { return val * 2; }); 

या,

 let arr1 = arr.map(val => { // if one argument then no need of using () return val * 2; }); 

नोट: कॉलबैक फ़ंक्शन के अंदर, अगर इसका उपयोग किया जाता है, तो यहां this घटक वर्ग के बजाय कॉलबैक फ़ंक्शन को संदर्भित करता है।

उदाहरण के लिए:

 arr.map(function(val) { this.func(val); // Will not work }); arr.map((val,index)=>{ this.func(); // Will work });