javascript - क्यों `एक्सपोर्ट डिफॉल्ट कॉन्सट 'अमान्य है?




scope export (4)

आप इस तरह से भी कुछ कर सकते हैं यदि आप इसके बजाय डिफ़ॉल्ट रूप से एक कास्ट / लेट निर्यात करना चाहते हैं

const MyComponent = ({ attr1, attr2 }) => (<p>Now Export On other Line</p>);
export default MyComponent

आप ऐसा कुछ कर सकते हैं, जो मुझे व्यक्तिगत रूप से पसंद नहीं है।

let MyComponent;
export default MyComponent = ({ }) => (<p>Now Export On SameLine</p>);

मैं देखता हूं कि निम्नलिखित ठीक है:

const Tab = connect( mapState, mapDispatch )( Tabs );
export default Tab;

हालाँकि, यह गलत है:

export default const Tab = connect( mapState, mapDispatch )( Tabs );

फिर भी यह ठीक है:

export default Tab = connect( mapState, mapDispatch )( Tabs );

क्या यह स्पष्ट किया जा सकता है कि export default साथ अवैध क्यों है? क्या यह एक अनावश्यक जोड़-घटाव है और export default रूप में घोषित कुछ भी एक const या ऐसा है?


पॉल का जवाब वही है जिसकी आपको तलाश है। हालाँकि, एक व्यावहारिक बात के रूप में, मुझे लगता है कि आप अपने खुद के रिएक्ट + रेडक्स ऐप्स में उपयोग किए जा रहे पैटर्न में दिलचस्पी ले सकते हैं।

यहां मेरे एक मार्ग से एक छीन लिया गया उदाहरण है, जिसमें दिखाया गया है कि आप अपने घटक को कैसे परिभाषित कर सकते हैं और इसे एकल विवरण के साथ डिफ़ॉल्ट रूप से निर्यात कर सकते हैं:

import React from 'react';
import { connect } from 'react-redux';

@connect((state, props) => ({
    appVersion: state.appVersion
    // other scene props, calculated from app state & route props
}))
export default class SceneName extends React.Component { /* ... */ }

(नोट: मैं किसी भी मार्ग के शीर्ष-स्तरीय घटक के लिए "दृश्य" शब्द का उपयोग करता हूं)।

मुझे आशा है कि यह मददगार है। मुझे लगता है कि यह पारंपरिक connect( mapState, mapDispatch )( BareComponent ) तुलना में बहुत साफ- connect( mapState, mapDispatch )( BareComponent )


मेरे लिए यह टाइपस्क्रिप्ट के कई idiosyncracies (आईडीओ (टी) पर जोर) में से एक है जो लोगों को अपने बालों को बाहर निकालने और डेवलपर्स को शाप देने का कारण बनता है। शायद वे अधिक समझने योग्य त्रुटि संदेशों के साथ आने पर काम कर सकते थे।


यदि घटक का नाम MyComponent.js फ़ाइल नाम में समझाया गया है, तो बस घटक का नाम न MyComponent.js , कोड को पतला रखता है।

import React from 'react'

export default (props) =>
    <div id='static-page-template'>
        {props.children}
    </div>




default