क्या रिएक्ट घटक में state को परिभाषित करने में (वाक्यविन्यास के अलावा) कोई अंतर है (नीचे उदाहरण देखें, एक वर्ग में और एक निर्माता में)?

JS मेमोरी आवंटन, मेमोरी प्रबंधन, JS प्रदर्शन, मेमोरी लीक, कचरा संग्रहण, अन्य मुद्दों के संदर्भ में अंतर?

मैं आमतौर पर state को constructor में परिभाषित करता हूं। लेकिन अन्य लोगों के कोड की समीक्षा करते हुए मैंने देखा कि वे राज्य को एक वर्ग के दायरे में परिभाषित करते हैं।

class Button extends React.Component {
    // this style vs. ...
    state = {
        color: 'red'
    }

    constructor(props) {
        super(props)

        // ... vs. this style
        this.state = {
            color: 'red'
        }
    }
}
2
Green 28 जुलाई 2018, 11:05
1
यह सिर्फ एक सिंटैक्स चीनी है, दोनों आपको एक ही अंडरलाइनिंग ऑब्जेक्ट देंगे।
 – 
Keith
28 जुलाई 2018, 11:12
1
वाक्यात्मक चीनी हुड के नीचे कोड का एक टुकड़ा है जो वाक्यात्मक चीनी को संभव बनाने के लिए कुछ ऑपरेशन करता है। यह कम या ज्यादा खर्चीला ऑपरेशन हो सकता है।
 – 
Green
28 जुलाई 2018, 11:16
1
नहीं, यह बिल्कुल वैसा ही है, सिंटैक्स शुगर बस यही है। वर्ग स्कोप घोषणाएं अभी भी मानक नहीं हैं। तो कोई प्रदर्शन लाभ नहीं होगा।
 – 
Keith
28 जुलाई 2018, 11:18
पुनश्च क्या आपका यह भी मतलब था -> state = { color: 'red' } github.com/tc39/proposal-class-fields
 – 
Keith
28 जुलाई 2018, 11:26
हाँ, ज़रूर। वक्य रचना त्रुटि
 – 
Green
28 जुलाई 2018, 11:30

2 जवाब

कंस्ट्रक्टर के बाहर इंस्टेंस गुणों को प्रारंभ करना एक्मास्क्रिप्ट के अगले संस्करण के लिए एक प्रस्तावित सिंटैक्स है। यह एक आधिकारिक चरण 3 प्रस्ताव का हिस्सा है।

इस प्रस्ताव के अनुसार, निम्नलिखित स्निपेट:

class MyClass {
    constructor() {
        console.log("Hello from constructor!");
        this.x = 1;
    }
}

इसे छोटा किया जा सकता है:

class MyClass {
    x = 1;

    constructor() {
        console.log("Hello from constructor!");
    }
}

जहां संपत्ति x को घोषित किया गया है और आपके उदाहरण में संपत्ति state के समान सिंटैक्स के साथ आरंभ किया गया है।

1
cyco130 29 जुलाई 2018, 14:08
2
ES7 जैसी कोई चीज नहीं है। इसे वर्तमान में ES.Next कहा जाता है।
 – 
Estus Flask
28 जुलाई 2018, 16:18
संस्करण संख्या संदर्भ हटा दिया गया।
 – 
cyco130
29 जुलाई 2018, 14:08

यह भी एक तरह का प्रीएक्ट सिंटैक्स है...

0
Mihir 28 जुलाई 2018, 12:02